Доступно в редакциях: CE, SE, SE+, EE, CSE Pro (1.64)
Подробнее см. в разделе Условия и цены.
Ceph — это масштабируемая распределённая система хранения, обеспечивающая высокую доступность и отказоустойчивость данных. В Deckhouse поддерживается интеграция с Ceph-кластерами, что позволяет динамически управлять хранилищем и использовать StorageClass на основе RBD (RADOS Block Device) или CephFS.
На этой странице представлены инструкции по подключению Ceph в Deckhouse, настройке аутентификации, созданию объектов StorageClass, а также проверке работоспособности хранилища.
Включение модуля
Для подключения Ceph-кластера в Deckhouse необходимо включить модуль csi-ceph
. Для этого примените ресурс ModuleConfig:
1d8 k apply -f - <<EOF
2apiVersion: deckhouse.io/v1alpha1
3kind: ModuleConfig
4metadata:
5 name: csi-ceph
6spec:
7 enabled: true
8EOF
Подключение к Ceph-кластеру
Чтобы настроить подключение к Ceph-кластеру, необходимо применить ресурс CephClusterConnection. Пример команды:
1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephClusterConnection
4metadata:
5 name: ceph-cluster-1
6spec:
7 # FSID/UUID Ceph-кластера.
8 # Получить FSID/UUID Ceph-кластера можно с помощью команды `ceph fsid`.
9 clusterID: 2bf085fc-5119-404f-bb19-820ca6a1b07e
10 # Список IP-адресов ceph-mon’ов в формате 10.0.0.10:6789.
11 monitors:
12 - 10.0.0.10:6789
13EOF
Проверить создание подключения можно командой (фаза должна быть в статусе Created
):
1d8 k get cephclusterconnection ceph-cluster-1
Аутентификация
Чтобы пройти аутентификацию в Ceph-кластере, необходимо определить параметры аутентификации в ресурсе CephClusterAuthentication:
1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephClusterAuthentication
4metadata:
5 name: ceph-auth-1
6spec:
7 # Имя пользователя без `client.`.
8 userID: admin
9 # Ключ авторизации, соответствующий userID.
10 userKey: AQDbc7phl+eeGRAAaWL9y71mnUiRHKRFOWMPCQ==
11EOF
Создание StorageClass
Создание объектов StorageClass осуществляется через ресурс CephStorageClass, который определяет конфигурацию для желаемого класса хранения. Ручное создание ресурса StorageClass без CephStorageClass может привести к ошибкам. Пример создания StorageClass на основе RBD (RADOS Block Device):
1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephStorageClass
4metadata:
5 name: ceph-rbd-sc
6spec:
7 clusterConnectionName: ceph-cluster-1
8 clusterAuthenticationName: ceph-auth-1
9 reclaimPolicy: Delete
10 type: RBD
11 rbd:
12 defaultFSType: ext4
13 pool: ceph-rbd-pool
14EOF
Пример создания StorageClass на основе файловой системы Ceph:
1d8 k apply -f - <<EOF
2apiVersion: storage.deckhouse.io/v1alpha1
3kind: CephStorageClass
4metadata:
5 name: ceph-fs-sc
6spec:
7 clusterConnectionName: ceph-cluster-1
8 clusterAuthenticationName: ceph-auth-1
9 reclaimPolicy: Delete
10 type: CephFS
11 cephFS:
12 fsName: cephfs
13EOF
Проверьте, что созданные ресурсы CephStorageClass перешли в состояние Created
, выполнив следующую команду:
1d8 k get cephstorageclass
В результате будет выведена информация о созданных ресурсах CephStorageClass:
1NAME PHASE AGE
2ceph-rbd-sc Created 1h
3ceph-fs-sc Created 1h
Проверьте созданный StorageClass с помощью следующей команды:
1d8 k get sc
В результате будет выведена информация о созданном StorageClass:
1NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
2ceph-rbd-sc rbd.csi.ceph.com Delete WaitForFirstConsumer true 15s
3ceph-fs-sc rbd.csi.ceph.com Delete WaitForFirstConsumer true 15s
Если объекты StorageClass появились, значит настройка модуля csi-ceph
завершена. Теперь пользователи могут создавать PersistentVolume, указывая созданные объекты StorageClass.