Я пытаюсь настроить кластер высокой доступности с storageOS. В буквальном смысле я хочу реплицировать тома между узлами, и если узел не работает, мое приложение Statefull должно запуститься на новом узле с последним состоянием.
У меня 1 главный и 2 подчиненных узла на голом железе (виртуальная коробка). Я успешно установил хранилища со штурвалом в соответствии с этими документами: https://docs.storageos.com/docs/platforms/kubernetes/install/1.13
Я могу получить доступ к веб-интерфейсу хранилищ в браузере, и все выглядит нормально. Я также успешно создаю класс хранилищ.
Я пытаюсь создать постоянную заявку на том и связать ее с модулем. После создания pvc и модуля pv успешно создается и связывается с заявкой. Я проверяю его в браузере, и на узлах есть 1 реплика и 1 основной постоянный том. Пока здесь нет проблем.
когда я выключаю узел модуля и перезапускаю модуль на другом узле, модуль зависает в состоянии создания контейнера. Команда Describe дает следующие результаты:
Предупреждение FailedAttachVolume 23-мая ошибка присоединения контроллера-присоединения Ошибка мульти-подключения для тома "pvc-0b2a1dbf-62e4-11e9-8b86-0800278a3f7b" Том уже используется модулями nginx, nginx-6779c9f483-10128 * 101 *
Я следую этому руководству, и модуль должен запускаться на другом узле с таким же состоянием:
https://docs.storageos.com/docs/platforms/kubernetes/firstvolume/
Я проверяю эту директиву на узлах "/ var / lib / storageos / volume" и модулях и вижу тома в одном узле (который имеет постоянный том), но не вижу никаких томов на другом узле.
Я пытался:
Изменить политику возврата рекламы
Небольшая попытка с openebs, но тот же вопрос
Я пробую этот результат устранения неполадок такой же: https://docs.storageos.com/docs/platforms/kubernetes/troubleshoot/volumes#pod-in-pending-because-of-mount-error (я пробую только для докера, я не знаю, как включить MountPropagation на kubernetes)
Я пытался ждать 15-20 минут, но состояние ошибки все равно
Я пробовал с 1 ведущим и 3 подчиненными узлами результат такой же
Секрет и Кластер
apiVersion: v1
kind: Secret
metadata:
name: "storageos-api"
namespace: "default"
labels:
app: "storageos"
type: "kubernetes.io/storageos"
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
---
apiVersion: "storageos.com/v1"
kind: "StorageOSCluster"
metadata:
name: "example-storageos"
namespace: "default"
spec:
secretRefName: "storageos-api"
secretRefNamespace: "default"
---
PVC and Pod
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mpvc
labels:
storageos.com/replicas: "1"
annotations:
volume.beta.kubernetes.io/storage-class: fast
spec:
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
securityContext:
privileged: true
volumeMounts:
- mountPath: /usr/share/nginx/html/
name: v1
volumes:
- name: v1
persistentVolumeClaim:
claimName: mpvc
The pod must start on the other node when a node fails but cannot bind the same volume on new node