VolumeClaim в Куберне Google Cloud - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь создать как PersistentVolume, так и PersistentVolumeClaim в Google Kubernetes Engine.

Способ связать их - через 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 ]

0 голосов
/ 31 мая 2018

Спасибо за вашу помощь @ konstantin-vustin

Я нашел решение.Мне пришлось указать атрибут storageClassName: manual в спецификации обоих объектов.

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

Согласно документу

APV без storageClassName не имеет класса и может быть привязан только к 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
0 голосов
/ 31 мая 2018

Прежде всего, PersistentVolume ресурсы не принадлежат ни одному пространству имен.Они представляют собой ресурсы уровня кластера, такие как узлы, но PersistentVolumeClaim объекты могут быть созданы только в определенном пространстве имен.

Похоже, что когда вы создали заявку ранее, она была немедленно привязана к PersistentVolume.Можете ли вы показать вывод команд:

$ kubectl get pv
$ kubectl get pvc

Весьма вероятно, что для persistentVolumeReclaimPolicy установлено значение Retain, поэтому ваш PersistentVolume находится в состоянии Released.Поскольку нет другого ресурса PersistenVolume, соответствующего требованиям вашей заявки, ваш PersistentVolumeClaim находится в статусе Pending.

...