Можно ли иметь один и тот же ПВХ в двух томах в кубернетах? - PullRequest
0 голосов
/ 02 мая 2019

Мой модуль объявляет два разных тома.

Я использую некоторые определения шаблонов и в зависимости от среды в некоторых случаях я хотел бы использовать одно и то же утверждение для двух томов.

Это приводит к ошибке

    Unable to mount volumes for pod "task-pv-pod_<...>": timeout expired waiting for volumes to attach/mount for pod "<...>"/"task-pv-pod". list of unattached/unmounted volumes=[task-pv-storage1]
  • Отлично работает с двумя разными утверждениями.
  • Можно использовать одну и ту же заявку в нескольких пакетах.

Это упрощенное определение модуля:

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage1
      persistentVolumeClaim:
       claimName: task-pv-claim
    - name: task-pv-storage2
      persistentVolumeClaim:
       claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage1
        - mountPath: "/usr/share/nginx/something-else"
          name: task-pv-storage2

Так почему же это не работает?

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

Чтобы ответить на ваш вопрос «возможно ли использовать одну и ту же заявку в нескольких модулях?», Давайте рассмотрим различные режимы доступа к присоединению претензии:

Когда вы создаете PVC с настройками по умолчанию, высоздаем постоянный том и заявку, расположенную поверх него, с режимом доступа присоединения ReadWriteOnce.

ReadWriteOnce - том может быть подключен как узел чтения-записи одним узлом

Таким образом, это утверждение можно подключить только к модулям на одном узле.Существует обходной путь, позволяющий монтировать этот том на несколько модулей.Одним из них является планирование всех ваших модулей на одном и том же узле, что технически противоречит цели использования оркестровки контейнера.Это может быть достигнуто путем назначения модулей для узлов .Подробнее см. В связанном документе.

Другой способ заключается в использовании постоянных томов диска / NFS.В зависимости от используемого вами облачного провайдера, вы можете использовать разных провайдеров FileSystem.

Таким образом, вы можете изменить режим доступа на ReadWriteMany:

ReadWriteMany - том можно монтировать как доступ для чтения и записи с помощьюмного узлов

С помощью этой политики доступа вы можете монтировать свой том на несколько модулей в кластере независимо от того, на каком узле они работают.

0 голосов
/ 02 мая 2019

Согласно документу: «После привязки привязки PersistentVolumeClaim являются эксклюзивными, независимо от того, как они были связаны. Связывание PVC-PV представляет собой сопоставление один-к-одному». https://kubernetes.io/docs/concepts/storage/persistent-volumes/#binding Имеет ли это смысл?

...