背景:

当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)如果修改不能保存,应该是缺少权限,这点未深入测试

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐