Kubernetes PersistentVolume和PersistentVolumeClaim可能会导致我的pod在复制日志时崩溃

我有一个PersistentVolume,我指定如下:

apiVersion: v1 kind: PersistentVolume metadata: name: mypv-shared spec: accessModes: - ReadWriteMany capacity: storage: 5Gi hostPath: path: /data/mypv-shared/ 

然后我创build了一个具有以下规格的PersistentVolumeClaim:

 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypv-shared-claim spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi 

但是当我创buildPVC时,运行kubectl get pv显示它绑定到一个随机生成的PV

 NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-38c77920-a223-11e7-89cc-08002719b642 5Gi RWX Delete Bound default/mypv-shared standard 16m 

我相信这是我的豆荚运行testing时造成的问题,因为我不知道该豆荚是否正确安装指定的目录。 尝试在运行结束时复制testing日志时,我的pod在testing结束时崩溃。

原因真的是persistentVolume / Claim还是我应该看看别的东西? 谢谢!

创buildPVCdynamic调配PV,而不是使用您通过hostpath手动创build的hostpath 。 在PVC上简单地设置.spec.storageClassName和一个空string( ""

从文档 :

其storageClassName设置为""的PVC始终被解释为请求没有类的PV,因此只能绑定到没有类的PV(没有注释或一个等于“”)。 没有storageClassName的PVC是不完全相同的…

因此,创build这样的东西(我也添加了标签和select器,以确保预期PV与PVC配对;您可能不需要这个约束):

 apiVersion: v1 kind: PersistentVolume metadata: name: mypv-shared labels: name: mypv-shared spec: accessModes: - ReadWriteMany capacity: storage: 5Gi hostPath: path: /data/mypv-shared/ --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypv-shared-claim spec: storageClassName: "" selector: matchLabels: name: mypv-shared accessModes: - ReadWriteMany resources: requests: storage: 5Gi