Как заставить glusterfs выжить при обновлении кластера
Я пытаюсь использовать glusterfs, установленную непосредственно на моих узлах кластера GCE. Установка не сохраняется при обновлении кластера, что может быть решено с помощью сценария начальной загрузки. Проблема в том, что когда я переустанавливал glusterfs вручную и монтировал кирпич, там не было томов, которые мне пришлось принудительно воссоздать.
Что случилось? Хранит ли glusterfs данные тома где-то еще, кроме кирпичей? Как мне это предотвратить?
1 ответ
Могу ли я подтвердить, что вы делаете это в кластере Kubernetes? Я предполагаю, что вы, как вы упомянули, обновления кластера.
Если это так, когда вы говорите, что Gluster был установлен непосредственно на ваших узлах, я не уверен, что понимаю эту часть вашего поста. Мое понимание предполагаемого использования glusterfs заключается в том, что он существует как распределенная файловая система, и поэтому хранилище является частью отдельного кластера для узлов Kubernetes.
Я считаю, что это рекомендуемый метод для использования glusterfs с Kubernetes, и таким образом данные в томах будут сохраняться после обновления кластера Kubernetes.
Вот шаги, которые я выполнил.
Я создал кластер glusterfs, используя информацию / скрипт из первых трех шагов этого руководства (особенно "Клон", "Загрузи свой кластер" и "Создай свой первый том"). С точки зрения YAML ниже, может быть полезно знать, что мой том glusterfs был назван 'glustervolume'.
После того, как я подтвердил, что кластерный том создан, я создал Kubernetes, сервис и конечные точки, которые указывают на этот том. IP-адреса в разделе конечной точки YAML ниже являются внутренними IP-адресами экземпляров в кластере хранения glusterfs.
---
apiVersion: v1
kind: Service
metadata:
name: glusterfs-cluster
spec:
ports:
- port: 1
---
apiVersion: v1
kind: Endpoints
metadata:
name: glusterfs-cluster
subsets:
- addresses:
- ip: 10.132.0.6
ports:
- port: 1
- addresses:
- ip: 10.132.0.7
ports:
- port: 1
- addresses:
- ip: 10.132.0.8
ports:
- port: 1
Затем я создал модуль для использования тома кластера:
---
apiVersion: v1
kind: Pod
metadata:
name: glusterfs
spec:
containers:
- name: glusterfs
image: nginx
volumeMounts:
- mountPath: "/mnt/glusterfs"
name: glustervolume
volumes:
- name: glustervolume
glusterfs:
endpoints: glusterfs-cluster
path: glustervolume
readOnly: false
Поскольку том glusterfs существует отдельно от кластера Kubernetes (то есть в его собственном кластере), обновления Kubernetes не будут влиять на том.