PersistentVolume 标记为绑定但在容器中不可见

PersistentVolume marked as bound but invisible in containers

我从 GKE(和一般的 kubernetes)开始,我想使用 gcePersistentDisk 在 pod 上安装一个持久卷。

我首先在 Compute Engine 中创建了一个永久磁盘(项目数据),然后像这样创建了一个 PersistentVolume 和一个 PersistentVolumeClaim:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: project-data
spec:
  storageClassName: standard
  capacity:
    storage: 20G
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: project-data
    fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: project-data-claim
spec:
  storageClassName: standard
  volumeName: project-data
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20G
  selector:
    matchLabels:
      app: myapp

应用此配置后,我在 GKE/Storage 中看到我的 PVC 是 "Bound",但我无法在 myapp 中找到访问我的卷的方法。

我尝试通过添加以下内容在控制台中编辑部署 yaml:

volumeMounts:
- mountPath: /data
  name: project-data

...但是这个修改被控制台拒绝了(貌似这种编辑是被禁止的)

如何才能最终在我的应用程序中将我的 PersistentVolume 视为文件系统?

首先,PVC应该在volumes部分定义:

volumes:
- name: project-data
  persistentVolumeClaim: 
    claimName: project-data-claim

如果直接编辑pod不成功,可以编辑yaml文件,然后应用:

$ kubectl apply -f your.yaml

此外,由于您在 pvc 配置中定义了 selector,我认为您应该在 pv 配置中定义 label