首页 文章

Volume Klaim in Kubernetes Google Cloud

提问于
浏览
1

我正在尝试在Google Kubernetes Engine上创建PersistentVolume和PersistentVolumeClaim .

链接它们的方法是通过labelSelector . 我正在使用此定义创建对象:

volume.yml

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-test
  namespace: mynamespace
  labels:
    pv-owner: owner
    pv-usage: pv-test
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data/test/
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-test
  namespace: mynamespace
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  selector:
    matchLabels:
      pv-usage: pv-test

和运行:

kubectl apply -f volume.yml

这两个对象都已成功创建,但是,VolumeClaim显然正在等待永远等待符合其要求的卷 .

请你帮助我好吗?

谢谢!

2 回答

  • 2

    首先, PersistentVolume 资源不属于任何名称空间 . 它们是节点等集群级资源,但 PersistentVolumeClaim 对象只能在特定名称空间中创建 .

    似乎在您之前创建声明时,它立即绑定到 PersistentVolume . 你能显示命令的输出:

    $ kubectl get pv
    $ kubectl get pvc
    

    您的 persistentVolumeReclaimPolicy 很可能被设置为 Retain ,因此您的 PersistentVolume 现在处于 Released 状态 . 由于没有其他 PersistenVolume 资源符合您的索赔要求,因此 PersistentVolumeClaim 处于 Pending 状态 .

  • 2

    谢谢你的帮助@ konstantin-vustin

    我找到了解决方案 . 我必须在两个对象的规范中指定 storageClassName: manual 属性 .

    https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class

    根据文件

    没有storageClassName的PV没有类,只能绑定到不请求特定类的PVC .

    所以IMO之前应该有用,所以我不确定我是否清楚地理解它 .

    这是以前的状态

    kubectl get pv pv-test-vol && kubectl get pvc pv-test --namespace openwhisk
    NAME          CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM     STORAGECLASS   REASON    AGE
    pv-test-vol   2Gi        RWO            Retain           Available             manual                   26s
    NAME      STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    pv-test   Pending                                       standard       26s
    

    更新的定义

    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-test
      namespace: mynamespace
      labels:
        pv-owner: owner
        pv-usage: pv-test
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      capacity:
        storage: 1Gi
      hostPath:
        path: /data/test/
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pv-test
      namespace: mynamespace
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      selector:
        matchLabels:
          pv-usage: pv-test
    

    这是之后的状态

    kubectl get pv pv-test-vol && kubectl get pvc pv-test --namespace openwhisk
    NAME          CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM               STORAGECLASS   REASON    AGE
    pv-test-vol   2Gi        RWO            Retain           Bound     openwhisk/pv-test   manual                   4s
    NAME      STATUS    VOLUME        CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    pv-test   Bound     pv-test-vol   2Gi        RWO            manual         4s
    

相关问题