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并为空字符串(""

documentation

一个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 
+0

感谢您的回复!添加空白storageClassName可以解决绑定问题,但我仍然可以看到'复制日志消息时发生错误。这是否意味着问题与我的PV无关? – appdap1

+0

很难说从您提供的信息中,对不起。 –