Используя 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 использовали их.Как это можно сделать?