【问题标题】:VolumeClaim in Kubernetes Google CloudKubernetes Google Cloud 中的 VolumeClaim
【发布时间】:2018-05-31 08:50:00
【问题描述】:

我正在尝试在 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 显然一直处于等待状态,等待符合其要求的 Volume。

你能帮帮我吗?

谢谢!

【问题讨论】:

    标签: kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    首先,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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2020-11-16
        • 2021-11-15
        • 1970-01-01
        • 2021-04-13
        相关资源
        最近更新 更多