背景:
当pod挂载pvc时,在不能登录存储服务器的情况下,能通过界面对该pvc中文件进行编辑、查看、下载等操作
示例:
当前环境部署了zk集群,想通过界面操作pod zookeeper-0 所挂载名为data-zookeeper-0的pvc中的内容
方法:
部署jupyter-notebook,需要注意的是:
(1)命名空间
(2)PVC名称
(3)nodeName需要指定
yaml为:
apiVersion: v1
kind: Pod
metadata:
labels:
app/my-pv-browser: my-pv-browser
name: my-pv-browser
namespace: **** #换成pvc对应的ns
spec:
containers:
- args:
- jupyter
- notebook
- --ip=0.0.0.0
- --allow-root
- --NotebookApp.token=''
image: jupyter/base-notebook:notebook-7.0.5
imagePullPolicy: IfNotPresent
name: pv-browser
ports:
- containerPort: 8888
name: 791hjc
protocol: TCP
volumeMounts:
- mountPath: /data
name: vol-f0vll
workingDir: /data
securityContext:
privileged: true
runAsUser: 0
nodeName: dev-node01 #需要指定pvc所在的节点
volumes:
- name: vol-f0vll
persistentVolumeClaim:
claimName: data-zookeeper-0 #pvc名称
---
apiVersion: v1
kind: Service
metadata:
name: my-pv-browser-nodeport
namespace: ****
spec:
selector:
app/my-pv-browser: my-pv-browser
ports:
- name: nk7hdl
nodePort: 32088
port: 8888
protocol: TCP
targetPort: 8888
sessionAffinity: None
type: NodePort
通过访问nodeport方式访问,通过界面能增删改查文件内容,操作完之后可以把该jupyter-notebook pod和service删除
注意:
(1)已测试过csi,hostPath,local,nfs类型的存储
(2)通过jupyter-notebook新增文件时,注意换行符是windows(cr lf),有可能造成读取错误。建议可以通过上传文件的方式新增格式正确的文件
(3)如果修改不能保存,应该是缺少权限,这点未深入测试