pod має незв’язані PersistentVolumeClaims


84

Коли я натискаю на розгортання, з якихось причин я отримую помилку на моїх стручках:

pod має незв’язані PersistentVolumeClaims

Ось мій YAML нижче:

Це працює локально, а не на будь-якому хмарному рішенні.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.16.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: ckan
  name: ckan
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: ckan
    spec:
      containers:
        image: slckan/docker_ckan
        name: ckan
        ports:
        - containerPort: 5000
        resources: {}
        volumeMounts:
            - name: ckan-home
              mountPath: /usr/lib/ckan/
              subPath: ckan
      volumes:
      - name: ckan-home
        persistentVolumeClaim:
          claimName: ckan-pv-home-claim
      restartPolicy: Always
status: {}

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ckan-pv-home-claim
  labels:
    io.kompose.service: ckan
spec:
  storageClassName: ckan-home-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  volumeMode: Filesystem
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: ckan-home-sc
provisioner: kubernetes.io/no-provisioner
mountOptions:
  - dir_mode=0755
  - file_mode=0755
  - uid=1000
  - gid=1000

Відповіді:


86

Ви повинні визначити PersistentVolume, що забезпечує простір на диску, який буде споживатися PersistentVolumeClaim .

При використанні storageClassKubernetes збирається ввімкнути "Динамічне надання томів", яке не працює з локальною файловою системою.


Щоб вирішити проблему:

  • Надайте PersistentVolume, що відповідає обмеженням претензії (розмір> = 100Mi)
  • Видаліть storageClass-line з PersistentVolumeClaim
  • Видаліть StorageClass з кластера

Як ці твори грають разом?

При створенні опису стану розгортання зазвичай відомо, який тип (обсяг, швидкість, ...) сховища знадобиться цій програмі.
Щоб зробити розгортання універсальним, ви хочете уникнути жорсткої залежності від сховища. Обсяг абстракції Kubernetes дозволяє стандартизовано забезпечувати та споживати сховище.

PersistentVolumeClaim використовується для забезпечення зберігання-обмеження поряд з розгортанням програми.

У PersistentVolume пропозиції для Кластера обсяг-екземпляри готових до вживання ( " bound«). Один PersistentVolume буде пов’язаний з однією претензією. Але так як кілька примірників цієї вимоги може виконуватися на кількох вузлах, що обсяг може бути доступний на кількох вузлах.

PersistentVolume без Клас складування вважається статичним .

«Dynamic Volume Provisioning» поряд з більш Клас складування дозволяє кластеру надання PersistentVolumes на вимогу. Для того, щоб це працювало, даний постачальник сховищ повинен підтримувати підготовку - це дозволяє кластеру запитувати надання "нового" PersistentVolume, коли з'являється незадоволений PersistentVolumeClaim .


Приклад PersistentVolume

Для того, щоб знайти, як вказати речі, вам найкраще порадити поглянути на API для вашої версії Kubernetes , тому наступний приклад будується з посилання на API K8S 1.17 :

apiVersion: v1
kind: PersistentVolume
metadata:
  name: ckan-pv-home
  labels:
    type: local
spec:
  capacity:
    storage: 100Mi
  hostPath:
    path: "/mnt/data/ckan"

PersistentVolumeSpec дозволяє визначити кілька атрибутів. Я вибрав hostPathтом, який відображає локальний каталог як вміст для тому. Ємність дозволяє планувальнику ресурсів розпізнати цей обсяг як застосовний з точки зору потреб у ресурсах.


Додаткові ресурси:


3
Ви не можете видалити StorageClass, достатньо просто замінити значення імені класу сховища на порожній рядок, наприклад StorageClass: ""
mrvol

Як слід визначити PersistentVolume?
Віктор Зуанацці

1
@VictorZuanazzi гарне запитання - здається, документи трохи змінилися, я додав приклад. Копатися в API на початку досить важко. На щастя, часто є перехресні посилання з API-документів на керівництва та навпаки. Сподіваюся, це допоможе вам продовжувати.
Флоріан Нойман,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.