Kubernetes: Могу ли я установить разные подпути из одного и того же PV в разные места одного и того же контейнера? - PullRequest
0 голосов
/ 24 января 2019

Могу ли я установить разные подпути из одного и того же PV в разные места одного контейнера?

Я запускаю несколько экземпляров WordPress в кластере моей компании Kubernetes. Каждый экземпляр имеет свой собственный том персистентности и контейнер. Единственная особенность моей установки состоит в том, что я монтирую несколько путей PV на несколько путей контейнера.

Все мои контейнеры работали хорошо с тех пор, как пару недель назад мы обновили Kubernetes до текущей версии. С тех пор начался ад.

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:25:46Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

При перезапуске модуля, если он запланирован для запуска на другом узле, он застревает на PodInitializing со следующим сообщением о событии

Ошибка Multi-Attach для тома "pvc-ac6b35f3-7716-11e8-adda-b60483de6a40" Том уже подключен исключительно к одному узлу и не может быть подключен к другому

Вот мои ресурсы.


A Ceph RBD PersistentVolume

Содержит две директории и файл

  • html/: каталог с php-файлами
  • logs/: каталог с файлами журналов
  • container-data.txt: текстовый файл с некоторой информацией

Определяется как:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rbd-wordpress-mysite
  labels:
    app: wordpress
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

Мой стручок

kind: Deployment
apiVersion: apps/v1beta1
metadata:
  name: wordpress-mysite
  labels:
    app: wordpress
  namespace: unibz
spec:
  template:
    metadata:
      name: wordpress-mysite
      labels:
        app: wordpress
      namespace: unibz
    spec:
      containers:
        - name: wordpress-mysite
          image: myimage
          volumeMounts:
          - mountPath: "/root/container-data.txt"
            name: wordpress-data
            subPath: container-data.txt
          - mountPath: "/var/www/html"
            name: wordpress-data
            subPath: html
          - mountPath: "/var/log/apache2"
            name: wordpress-data
            subPath: logs
          ports:
          - containerPort: 80
            name: wordpress-http
      volumes:
      - name: wordpress-data
        persistentVolumeClaim:
           claimName: rbd-wordpress-mysite
      - name: wordpress-conf
        configMap:
          name: wordpress-conf

Это неправильный способ использования постоянства? Может ли это быть причиной ошибки Multi-Attach?

1 Ответ

0 голосов
/ 25 января 2019

Похоже, что вы пытаетесь присоединить один и тот же PVC к другому node.

В режимах доступа Заявки используют те же соглашения, что и тома, при запросе хранилища сконкретные режимы доступа

В вашем .yaml Я вижу, у вас есть настройки accessModes: ReadWriteOnce.

A PersistentVolume может быть установлена ​​на хосте любым способомподдерживается поставщиком ресурсов.Как показано в таблице ниже, у провайдеров будут разные возможности, и режимы доступа каждого PV установлены на конкретные режимы, поддерживаемые этим конкретным томом.Например, NFS может поддерживать несколько клиентов для чтения / записи, но конкретный PV NFS может быть экспортирован на сервер только для чтения.Каждый PV получает свой собственный набор режимов доступа, описывающих его возможности.

Режимы доступа:

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

  • ReadOnlyMany - том можно монтировать только для чтения многими узлами

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

Из документов Kubernetes относительно Persistent Volumes вы можете прочитать, что CephFS поддерживает все accessModes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...