Может заставить работать базовый пример Rook / Ceph, но все данные, очевидно, находятся на одном узле - PullRequest
2 голосов
/ 18 апреля 2019

Используя Rook 0.9.3, я смог вызвать каталог на базе Ceph для базы данных MySQL в трехузловом кластере Kubernetes (1 мастер, два рабочих) просто следующим образом:

kubectl create -f cluster/examples/kubernetes/ceph/operator.yaml
kubeclt create -f cluster/examples/kubernetes/ceph/cluster.yaml
vim cluster/examples/kubernetes/ceph/storageclass.yaml # change xfs to ext4
kubectl create -f cluster/examples/kubernetes/ceph/storageclass.yaml
kubectl create -f cluster/examples/kubernetes/mysql.yaml

Когда я сейчас bash в стручке wordpress-mysql-*, я вижу, что /var/lib/mysql монтируется из /dev/rbd1.Если я создаю случайный файл в этом каталоге и затем удаляю модуль, файл сохраняется при появлении нового экземпляра модуля.

Мой первый рабочий содержит эти каталоги в /var/lib/rook: mon-a mon-c mon-d osd0 rook-ceph.Мой второй работник содержит только один каталог в /var/lib/rook: mon-b.Это и другие доказательства (из df) предполагают, что Rook (и расширение Ceph) хранит все свои файловые данные (например, все блоки, которые составляют смонтированный /var/lib/mysql) в /var/lib/rook/osd0, то есть один раз на одном узле.

Я бы ожидал, что блоки распределяются по нескольким узлам, поэтому при сбое одного узла (в моем случае, первого работника) доступ к данным по-прежнему доступен.Это наивное ожидание?Если нет, то как я могу настроить Rook соответственно?Кроме того, у меня есть вторые неформатированные диски на обоих рабочих узлах, и я бы предпочел, чтобы Rook / Ceph использовали их.Как это можно сделать?

1 Ответ

1 голос
/ 18 апреля 2019

для использования другого раздела как osd вам нужно изменить cluster.yml и добавить

nodes:
- name: "kube-node1"
  devices:
  - name: "sdb"
- name: "kube-node2"
  devices:
  - name: "sdb"
- name: "kube-node3"
  devices:
  - name: "sdb"
...