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