Kubernetes PersistentVolume和PersistentVolumeClaim可能会导致在复制日志
问题描述:
它崩溃了我荚问题,我有我指定为以下一个PersistentVolume:Kubernetes PersistentVolume和PersistentVolumeClaim可能会导致在复制日志
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv-shared
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 5Gi
hostPath:
path: /data/mypv-shared/
然后,我创建了一个PersistentVolumeClaim以下规格:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypv-shared-claim
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
但是,当我创建PVC,运行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
我相信这是我的豆荚在运行测试时导致的问题,因为我不确定该豆荚是否正确安装了指定的目录。尝试在运行结束时复制测试日志时,我的pod在测试结束时崩溃。
究其原因究竟是persistentVolume/Claim还是我应该看看别的东西?谢谢!
答
创建PVC时动态配置了PV,而不是使用hostpath
手动创建的配置。在PVC只需设置.spec.storageClassName
并为空字符串(""
)
一个PVC以其storageClassName设置为
""
总是被解释为被请求没有一流的PV,所以它只能绑定到没有类的PV(没有注释或一个集合等于“”)。没有storageClassName一个PVC是不太一样的...
因此,创建这样的事情(我还添加标签和选择,以确保预期的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
感谢您的回复!添加空白storageClassName可以解决绑定问题,但我仍然可以看到'复制日志消息时发生错误。这是否意味着问题与我的PV无关? – appdap1
很难说从您提供的信息中,对不起。 –