Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s
前言:纯个人记录使用。
- 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。
- 搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。
- 搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。
官方文档:Zero to JupyterHub with Kubernetes
**版本对应:**This documentation is for Helm chart version 2.0.0 that deploys JupyterHub version 3.0.0 and other components versioned in hub/images/requirements.txt. The Helm chart requires Kubernetes version >=1.20.0 and Helm >=3.5
| 组件 | 版本 |
|---|---|
| kubernetes | v1.20.4 |
| jupyterhub-chart | 2.0.0 |
| helm | v3.12.3 |
文章目录
- 第一部分: Setup Kubernetes
- 1、Setup Kubernetes
- 2、Setting up `helm`
- 第二部分: Setup JupyterHub
- 1、Installing JupyterHub
- 1.1 下载所需jupyterhub chart版本
- 1.2 下载相关离线镜像
- 1.3 加载镜像
- 1.4 jupyterhub 配置
- 1.4.1 预先配置pv与pvc
- 1.5 启动jupyterhub
- 1.6 jupyterhub 服务验证
第一部分: Setup Kubernetes
1、Setup Kubernetes
kubernetes-v1.20.4 离线二进制部署
[root@k8s-master /data/s0/kubernetes]$ kubectl version --short
Client Version: v1.20.4
Server Version: v1.20.4
2、Setting up helm
通过百度网盘分享的文件:helm-v3.12.3-linux-amd64.tar.gz
链接:https://pan.baidu.com/s/1f8xONKHWshHxieu7jEN4yA
提取码:1234
# 解压安装
[root@k8s-master /data/s0/kubernetes/helm]$ tar -xzvf helm-v3.12.3-linux-amd64.tar.gz
[root@k8s-master /data/s0/kubernetes/helm]$ ln -s /data/s0/kubernetes/helm/linux-amd64/helm /usr/local/bin
# 验证
[root@k8s-master /data/s0/kubernetes/helm]$ helm version
version.BuildInfo{Version:"v3.12.3", GitCommit:"3a31588ad33fe3b89af5a2a54ee1d25bfe6eaa5e", GitTreeState:"clean", GoVersion:"go1.20.7"}
第二部分: Setup JupyterHub
1、Installing JupyterHub
1.1 下载所需jupyterhub chart版本
JupyterHub’s Helm chart 仓库 --> jupyterhub-2.0.0.tgz
通过百度网盘分享的文件:jupyterhub-2.0.0.tgz
链接:https://pan.baidu.com/s/1ZrEHC9al29ye7n0W3UAi3g
提取码:1234
1.2 下载相关离线镜像
# 解压安装
[root@k8s-master /data/s0/kubernetes/helm]$ tar -xzvf jupyterhub-2.0.0.tgz # jupyterhub chart
# 查看所需镜像
[root@k8s-master /data/s0/kubernetes/helm]$ cat jupyterhub/Chart.yaml
annotations:artifacthub.io/images: |- image: jupyterhub/configurable-http-proxy:4.5.3name: configurable-http-proxy- image: jupyterhub/k8s-hub:2.0.0name: k8s-hub- image: jupyterhub/k8s-image-awaiter:2.0.0name: k8s-image-awaiter- image: jupyterhub/k8s-network-tools:2.0.0name: k8s-network-tools- image: jupyterhub/k8s-secret-sync:2.0.0name: k8s-secret-sync- image: jupyterhub/k8s-singleuser-sample:2.0.0name: k8s-singleuser-sample- image: k8s.gcr.io/kube-scheduler:v1.23.10 # helm upgrate 启动部署时,此版本有问题,改为v1.20.15,注意values.yaml中镜像名称修改,镜像保持一致name: kube-scheduler- image: k8s.gcr.io/pause:3.8 # 部署k8s时已下载安装,注意values.yaml中镜像名称修改,保持一致name: pause- image: k8s.gcr.io/pause:3.8name: pausd- image: traefik:v2.8.4name: traefik# 联网保存本地镜像
# 1. 下载保存 jupyterhub/configurable-http-proxy:4.5.3
> docker pull quay.io/jupyterhub/configurable-http-proxy:4.5.3
> docker tag quay.io/jupyterhub/configurable-http-proxy:4.5.3 jupyterhub/configurable-http-proxy:4.5.3
> docker save -o configurable-http-proxy:4.5.3.tar jupyterhub/configurable-http-proxy:4.5.3 # 2. 下载保存 jupyterhub/k8s-hub:2.0.0
> docker pull quay.io/jupyterhub/k8s-hub:2.0.0
> docker tag quay.io/jupyterhub/k8s-hub:2.0.0 jupyterhub/k8s-hub:2.0.0
> docker save -o k8s-hub:2.0.0.tar jupyterhub/k8s-hub:2.0.0# 3. 下载保存 jupyterhub/k8s-image-awaiter:2.0.0
> docker pull quay.io/jupyterhub/k8s-image-awaiter:2.0.0
> docker tag quay.io/jupyterhub/k8s-image-awaiter:2.0.0 jupyterhub/k8s-image-awaiter:2.0.0> docker save -o k8s-image-awaiter:2.0.0.tar jupyterhub/k8s-image-awaiter:2.0.0
# 4. 下载保存 jupyterhub/k8s-network-tools:2.0.0
> docker pull quay.io/jupyterhub/k8s-network-tools:2.0.0
> docker tag quay.io/jupyterhub/k8s-network-tools:2.0.0 jupyterhub/k8s-network-tools:2.0.0
> docker save -o k8s-network-tools:2.0.0.tar jupyterhub/k8s-network-tools:2.0.0# 5. 下载保存 jupyterhub/k8s-secret-sync:2.0.0
> docker pull quay.io/jupyterhub/k8s-secret-sync:2.0.0
> docker tag quay.io/jupyterhub/k8s-secret-sync:2.0.0 jupyterhub/k8s-secret-sync:2.0.0
> docker save -o k8s-secret-sync:2.0.0.tar jupyterhub/k8s-secret-sync:2.0.0# 6. 下载保存 jupyterhub/k8s-singleuser-sample:2.0.0
> docker pull m.daocloud.io/docker.io/jupyterhub/k8s-singleuser-sample:2.0.0
> docker tag m.daocloud.io/docker.io/jupyterhub/k8s-singleuser-sample:2.0.0 jupyterhub/k8s-singleuser-sample:2.0.0
> docker save -o k8s-singleuser-sample:2.0.0.tar jupyterhub/k8s-singleuser-sample:2.0.0# 7. 下载保存 k8s.gcr.io/kube-scheduler:v1.20.15
> docker pull k8s-gcr.m.daocloud.io/kube-scheduler:v1.20.15
> docker tag k8s-gcr.m.daocloud.io/kube-scheduler:v1.20.15 k8s.gcr.io/kube-scheduler:v1.20.15
> docker save -o kube-scheduler:v1.20.15.tar k8s.gcr.io/kube-scheduler:v1.20.15# 8. 下载保存 traefik:v2.8.4
> docker pull m.daocloud.io/docker.io/library/traefik:v2.8.4
> docker tag m.daocloud.io/docker.io/library/traefik:v2.8.4 traefik:v2.8.4
> docker save -o traefik:v2.8.4.tar traefik:v2.8.4## 9. 将离线镜像打包上传
> tar -czvf jupyterhub-chart-images.tgz ./*
> scp jupyterhub-chart-images.tgz k8s-master:/data/s0/kubernetes/helm
1.3 加载镜像
# ------------------ k8s-matser,k8s-node1、k8s-node2 ----------------------------
# 1. 加载镜像,node1、node2节点同理
[root@k8s-master /data/s0/kubernetes/helm]$ tar -xzvf jupyterhub-chart-images.tgz -C ./chart-images
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i configurable-http-proxy:4.5.3.tar
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i k8s-hub:2.0.0.tar
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i k8s-image-awaiter:2.0.0.tar
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i k8s-network-tools:2.0.0.tar
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i k8s-secret-sync:2.0.0.tar
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i k8s-singleuser-sample:2.0.0.tar
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i kube-scheduler:v1.20.15.tar
[root@k8s-master /data/s0/kubernetes/helm/chart-images]$ docker load -i traefik:v2.8.4.tar# 2.加载自定义用户科学环境;默认的单用户服务器jupyter镜像 k8s-singleuser-sample
# docker pull m.daocloud.io/docker.io/jupyter/datascience-notebook 默认拉取最新版本,最好指定版本,否则每次拉最新的
[root@k8s-master /data/s0/kubernetes/helm]$ docker load -i datascience-notebook.tar
# 注意:k8s在不指定镜像拉取策略imagePullPolicy的情况下,如果镜像标签tag:latest,imagePullPolicy默认值为“Always” 总是从镜像库拉取;
# 如果镜像标签tag不是:latest,imagePullPolicy默认值为“IfNotPresent” 本地有使用本地镜像,本地没有则拉取镜像库;
[root@k8s-master /data/s0/kubernetes/helm]$ docker tag jupyter/datascience-notebook:latest jupyter/datascience-notebook:2023.10.23
1.4 jupyterhub 配置
# jupyterhub 自定义配置
[root@datanode40 /data/s0/kubernetes/helm]$ touch config.yaml
[root@datanode40 /data/s0/kubernetes/helm]$ vim config.yaml
config.yaml 内容如下:
# 应用名称(deployment、service、pod等资源对象名称)
fullnameOverride: "jupyterhub"# 拉取镜像时,相关仓库身份认证(使用本机离线镜像)
imagePullSecret:create: falseautomaticReferenceInjection: false# hub服务pod配置(auth权限认证)
hub:revisionHistoryLimit: 1 # Kubernetes 中保留的历史版本数量config: # jupyterhub_cnfig.py 配置文件内容JupyterHub:admin_access: trueadmin_users: - zyp # 设置管理员用户authenticator_class: dummy # 用户验证,测试采用虚拟验证service:type: ClusterIP ports:nodePort:db:type: sqlite-pvc # JupyterHub 使用数据库,存储用户信息、服务器状态、活动记录等数据pvc: # 需要预先创建对应pvaccessModes:- ReadWriteOncestorage: 2GisubPath: sqlite # PV存储卷子路径,默认根路径storageClassName: sqlite-pv # 存储类别image:name: jupyterhub/k8s-hubtag: "2.0.0"pullPolicy: IfNotPresent#设置 chp(configurable-http-proxy)pod的代理、公网代理、https代理相关
proxy:service:type: NodePort # 公网代理服务 nodePorts:http: 30081chp: # configurable-http-proxy (chp)配置revisionHistoryLimit: 1image:name: jupyterhub/configurable-http-proxytag: "4.5.3" pullPolicy: IfNotPresenthttps:enabled: false # 禁用https # 单用户jupyter服务器
singleuser:networkTools:image:name: jupyterhub/k8s-network-toolstag: "2.0.0"pullPolicy: IfNotPresentstorage: # 配置单用户环境存储type: static # 静态挂载方式static:pvcName: notebook-pvc # 存储pvc名称,需手动创建pvc和pvsubPath: "{username}"capacity: 10GihomeMountPath: /home/jovyan # 容器中挂载主文件夹存储的位置 # Defines the default image image:name: jupyterhub/k8s-singleuser-sample # 可修改为自己的科学计算环境tag: "2.0.0"pullPolicy: IfNotPresent profileList: # 用户科学环境选择- display_name: "sample environment"description: "To avoid too much bells and whistles: Python."default: true- display_name: "Datascience environment"description: "If you want the additional bells and whistles: Python, R, and Julia."kubespawner_override:image: jupyter/datascience-notebook:2023.10.23pullPolicy: IfNotPresentstartTimeout: 300cpu:limit:guarantee: 0.5memory:limit:guarantee: 1Gcmd: jupyterhub-singleuser # 容器内,启动单用户服务器的命令defaultUrl: "/lab" # 用户jupyter界面extraEnv:JUPYTERHUB_SINGLEUSER_APP: "jupyter_server.serverapp.ServerApp" # k8s 容器调度相关
scheduling:userScheduler:revisionHistoryLimit: 1image:name: k8s.gcr.io/kube-schedulertag: "v1.20.15" pullPolicy: IfNotPresentuserPlaceholder:image:name: k8s.gcr.io/pausetag: "3.8"pullPolicy: IfNotPresent# 镜像拉取器
prePuller: hook:enabled: false # 离线环境,本地镜像,无需拉取pullOnlyOnChanges: falsecontinuous:enabled: falsepullProfileListImages: false# 空闲进程杀死服务
cull:enabled: trueusers: false # --cull-usersadminUsers: true # --cull-admin-usersremoveNamedServers: false # --remove-named-serverstimeout: 3600 # --timeoutevery: 600 # --cull-everyconcurrency: 10 # --concurrencymaxAge: 0 # --max-age
1.4.1 预先配置pv与pvc
pv 持久化参见 Kubernetes 常规使用记录。
# 配置sqlite存储的PV 和 单用户服务器存储的pv和PVC
[root@k8s-node1 /data/s0/kubernetes/nfs]$ mkdir pvs
[root@k8s-node1 /data/s0/kubernetes/nfs/pvs]$ vim pvs.yaml
# sqlite存储的PV
apiVersion: v1
kind: PersistentVolume
metadata:name: sqlite-pv1
spec:nfs: path: /data/s0/kubernetes/nfs/pv1readOnly: false server: k8s-node1capacity: storage: 2GiaccessModes: - ReadWriteOncestorageClassName: sqlite-pv persistentVolumeReclaimPolicy: Retain
---
# 单用户服务器pv
apiVersion: v1
kind: PersistentVolume
metadata:name: notebook-pv2
spec:nfs: path: /data/s0/kubernetes/nfs/pv2readOnly: false server: k8s-node1capacity: storage: 200GiaccessModes: - ReadWriteMany storageClassName: single-notebook persistentVolumeReclaimPolicy: Retain
---
# 单用户服务器pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: notebook-pvc # 与配置文件对应 namespace: jhub
spec:accessModes:- ReadWriteManystorageClassName: single-notebook resources: requests:storage: 20Gi
1.5 启动jupyterhub
# 创建命名空间
[root@k8s-master /data/s0/kubernetes/helm]$ kubectl create ns jhub
# 启动预设pvc和pv
[root@k8s-node1 /data/s0/kubernetes/nfs/pvs]$ kubectl apply -f pvs.yaml
# 启动jupyterhub
[root@k8s-master /data/s0/kubernetes/helm]$ helm upgrade --cleanup-on-fail \--install jupyterhub-release ./jupyterhub \--namespace jhub \--values config.yaml

# 验证pod运行状态(若存在pod 状态 Pending or ContainerCreating --》 kubectl --namespace=jhub describe pod <name of pod>)
[root@k8s-master /data/s0/kubernetes/helm]$ kubectl --namespace=jhub get pod
jupyterhub-hub-c87985f75-lkl4f 1/1 Running 0 5m18s
jupyterhub-proxy-5d95bb6786-87cqs 1/1 Running 0 5m18s
jupyterhub-user-scheduler-786c6759c7-2r24k 1/1 Running 0 5m18s
jupyterhub-user-scheduler-786c6759c7-6x5k6 1/1 Running 0 5m18s# 验证是否为k8s服务jupyterhub-proxy-public提供了外部IP
[root@k8s-master /data/s0/kubernetes/helm]$ kubectl --namespace=jhub get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jupyterhub-hub ClusterIP 10.0.0.50 <none> 8081/TCP 90s
jupyterhub-proxy-api ClusterIP 10.0.0.196 <none> 8001/TCP 90s
jupyterhub-proxy-public NodePort 10.0.0.51 <none> 80:30081/TCP 90s
问题:Error: rendered manifests contain a resource that already exists. Unable to continue with install: ClusterRole “jupyterhub-user-scheduler” in namespace “” exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key “meta.helm.sh/release-name” must equal “jupyterhub-release”: current value is “jupyterhub-v1”
解决:
kubectl delete clusterrole jupyterhub-user-scheduler
kubectl delete clusterrolebinding jupyterhub-user-scheduler
1.6 jupyterhub 服务验证
远程主机登录 http://k8s-matser:80081
-
用户登录界面

-
科学计算环境选择界面

-
用户分析操作界面

-
底层单用户容器

- 持久化存储查看

- k8s管理界面查看

相关文章:
Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s
前言:纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 官方文档…...
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域 Tomcat 配置允许跨域Web 项目配置允许跨域Tomcat 同时允许静态文件和 Web 服务跨域 偶尔遇到一个 Tomcat 部署项目跨域问题,因为已经处理…...
在C语言中使用伪终端与bash交互
了解伪终端概念: 伪终端(PTY)由一对设备组成:主设备(master)和从设备(slave)。数据写入主设备会出现在从设备,反之亦然。这允许一个进程通过主设备与另一个进程ÿ…...
阿里云 人工智能与机器学习
阿里云的 人工智能(AI)与机器学习(ML) 服务为企业提供了全面的AI解决方案,帮助用户在多个行业实现数据智能化,提升决策效率,推动业务创新。阿里云通过先进的技术和丰富的工具,支持用…...
HTML 显示器纯色亮点检测工具
HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Html相关程序案例,秉着开源精神的想法,望大家喜欢&#…...
【漏洞分析】UDF提权漏洞——CVE-2016-6662-MySQL ‘malloc_lib’变量重写命令执行
0x00 前言 最近在做渗透笔记,其中有一个靶机在getshell后,需要进行提权。发现靶机使用root启动的mysql服务,那么尝试使用UDF提权。于是在提权成功后,花了一天时间特意搜了一下整个UDF提权的漏洞原理和利用,加深理解。…...
Mybatis(day09)
Mybatis基础操作 功能列表: 查询 根据主键ID查询 条件查询新增更新删除 根据主键ID删除 根据主键ID批量删除 准备 实施前的准备工作: 准备数据库表创建一个新的 springboot 工程,选择引入对应的起步依赖(mybatis、mysql 驱动、…...
模式识别与机器学习 | 十一章 概率图模型基础
隐马尔科夫模型(Hidden Markov Model,HMM) HMM是建模序列数据的图模型 1、第一个状态节点对应一个初始状态概率分布 2、状态转移矩阵A, 3、发射矩阵概率B 4、对特定的(x,y)的联合概率可以表示为 α递归计算——前向算法β递归…...
深圳知识产权保护中心再发力,两大产业专利预审服务全新升级
在当今科技迅猛发展、市场竞争日益激烈的时代,知识产权保护对于产业发展的重要性不言而喻。深圳知识产权保护中心又有大动作,为高端装备制造和珠宝加工产业带来了专利预审服务的新突破。这一举措不仅为这两个产业注入了强大的发展动力,也为深…...
同步与并发:Java的同步舞蹈
现在,我们将深入探讨同步与并发,这是确保多线程程序正确性和效率的关键,就像是Java的同步舞蹈。 1 并发的概念 并发是指在多处理器系统中,多个操作或多个线程同时进行执行。在Java中,这意味着能够有效地利用多核处理…...
Kafka详解 ③ | Kafka集群操作与API操作
目录 1、Kafka集群操作 1.1、创建 topic 1.2、查看主题命令 1.3、生产者生产 1.4、消费者消费数据 1.5、运行 describe topics命令 1.6、增加 topic分区数 1.7、增加配置 1.8、删除配置 1.9、删除 topic 2、Kafka的Java API操作 2.1、生产者代码 2.2、消费者代 2…...
k8s基础(1)—Kubernetes-Pod
一、Pod简介 Pod是Kubernetes(k8s)系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型。Pod是由一个或多个容器组成的,这些容器共享存储和网络资源,可以看作是一个逻辑的主机。…...
iOS - 数组的真实类型
1. NSArray 类簇 // 1. __NSArray0 (空数组) NSArray *empty [];// 2. __NSArrayI (不可变数组) NSArray *immutable [1, 2, 3];// 3. __NSArrayM (可变数组) NSMutableArray *mutable [NSMutableArray array];// 4. __NSSingleObjectArrayI (单元素数组) NSArray *single …...
k8s启动报错
执行kubeadm init --image-repository registry.aliyuncs.com/google_containers 出现如下结果: [api-check] The API server is not healthy after 4m0.000885686s Unfortunately, an error has occurred: context deadline exceeded This error is likely caused by:…...
git:指令集
以下是对这些 Git 新特性和命令的更详细解读和实际用例分析,帮助更好地理解它们的作用及适用场景: 1. git switch 和 git restore 背景: 传统上,git checkout 是一个多功能命令,用于切换分支、检出文件、创建分支等&…...
自闭症家庭:建立支持系统与平衡生活
在自闭症家庭的世界里,每一天都充满了挑战与希望。自闭症,这一复杂的神经发育障碍,不仅影响着孩子的成长轨迹,也对整个家庭的生活方式产生了深远的影响。面对这一挑战,许多家庭都在努力寻找有效的支持系统和平衡生活的…...
html+css+js网页设计 美食 美食天下2个页面(里面包含php和mysql)
htmlcssjs网页设计 美食 美食天下2个页面(里面包含php和mysql) 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编…...
高阶知识库搭建实战七、(知识库雏形开发:qianwen-plus+Faiss)(练习推荐)
构建知识库:结合Faiss和qianwen-plus大模型的实践 环境搭建参考前面几篇文章:基础环境搭建、Faiss向量数据库安装 在当今信息爆炸的时代,如何高效地管理和检索海量知识成为了一个重要课题。知识库的构建为我们提供了一种有效的解决方案,它能够将分散的信息整合起来,方便…...
麒麟服务器安装kafka--亲测
我这安装的是单机版本的: 下载地址:Index of /kafka/3.9.0 我下载的是:https://dlcdn.apache.org/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz https://dlcdn.apache.org/kafka/3.9.0/kafka_2.12-3.9.0.tgz 一、下载并上…...
微机——8086微处理器的数据传送指令
目录 数据传送指令: 通用数据传送指令: MOV指令: 堆栈操作指令: PUSH指令: POP指令: 交换指令XCHG: XCHG指令: 换码指令XLAT: 换码指令XLAT: 8086 …...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
