Стадия жизненного цикла модуля: General Availability

Доступно в редакциях:  CE, SE, SE+, EE, CSE Pro (1.67)

Ceph — это масштабируемая распределённая система хранения с высокой доступностью и отказоустойчивостью. Deckhouse Kubernetes Platform (DKP) обеспечивает интеграцию Ceph-кластера при помощи модуля csi-ceph. Это даёт возможность динамически управлять хранилищем и использовать StorageClass на основе RADOS Block Device (RBD) или CephFS.

На этой странице представлены инструкции по подключению Ceph в Deckhouse, настройке аутентификации, созданию объектов StorageClass, а также проверке работоспособности хранилища.

Для работы со снимками требуется подключенный модуль snapshot-controller.

Миграция с модуля ceph-csi

При переключении на модуль csi-ceph с модуля ceph-csi выполняется автоматическая миграция, но её запуск требует предварительной подготовки:

  1. Установите количество реплик в ноль для всех операторов (redis, clickhouse, kafka и др.). Исключение: оператор prometheus будет отключён автоматически.

  2. Отключите модуль ceph-csi и включите csi-ceph.

  3. Дождитесь завершения операции. В логах DKP должно появиться сообщение “Finished migration from Ceph CSI module”.

  4. Проверьте работоспособность. Для этого создайте тестовые поды и PVC для проверки CSI.

  5. Верните операторы в рабочее состояние (установите количество реплик обратно).

сли Ceph StorageClass был создан не через ресурс CephCSIDriver, потребуется ручная миграция. Обратитесь в техподдержку.

Подключение к Ceph-кластеру

Для подключения Ceph-кластера следуйте пошаговым инструкциям ниже. Все команды выполняйте на машине с административным доступом к API Kubernetes.

  1. Выполните команду для активации модуля csi-ceph:

    d8 s module enable csi-ceph
  2. Дождитесь перехода модуля в состояние Ready:

    d8 k get module csi-ceph -w
  3. Убедитесь, что все поды в пространстве имён d8-csi-ceph находятся в состоянии Running или Completed и развёрнуты на всех узлах кластера:

    d8 k -n d8-csi-ceph get pod -owide -w
  4. Для настройки подключения к Ceph-кластеру примените ресурс CephClusterConnection.

    Пример команды:

    d8 k apply -f - <<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: CephClusterConnection
    metadata:
      name: ceph-cluster-1
    spec:
      # FSID/UUID Ceph-кластера.
      # Получить FSID/UUID Ceph-кластера можно с помощью команды `ceph fsid`.
      clusterID: 014df517-39d1-4453-b7b3-9930c563627c
      # Список IP-адресов ceph-mon в формате 10.0.0.10:6789.
      monitors:
        - 10.0.0.10:6789
      # Имя пользователя без `client.`.
      # Получить имя пользователя можно с помощью команды `ceph auth list`.
      userID: admin
      # Ключ авторизации, соответствующий userID.
      # Получить ключ авторизации можно с помощью команды `ceph auth get-key client.admin`.
      userKey: <your-ceph-auth-key>
    EOF
  5. Проверьте создание подключения командой (Phase должна быть в статусе Created):

    d8 k get cephclusterconnection ceph-cluster-1
  6. Создайте объект StorageClass при помощи ресурса CephStorageClass. Ручное создание StorageClass без использования CephStorageClass может привести к ошибкам.

    Пример создания StorageClass на основе RBD:

    d8 k apply -f - <<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: CephStorageClass
    metadata:
      name: ceph-rbd-sc
    spec:
      clusterConnectionName: ceph-cluster-1
      reclaimPolicy: Delete
      type: RBD
      rbd:
        defaultFSType: ext4
        pool: ceph-rbd-pool
    EOF

    Пример создания StorageClass на основе файловой системы Ceph:

    d8 k apply -f - <<EOF
    apiVersion: storage.deckhouse.io/v1alpha1
    kind: CephStorageClass
    metadata:
      name: ceph-fs-sc
    spec:
      clusterConnectionName: ceph-cluster-1
      reclaimPolicy: Delete
      type: CephFS
      cephFS:
        fsName: cephfs
    EOF
  7. Проверьте, что созданные ресурсы CephStorageClass перешли в состояние Created:

    d8 k get cephstorageclass

    В результате будет выведена информация о созданных ресурсах CephStorageClass:

    NAME          PHASE     AGE
    ceph-rbd-sc   Created   1h
    ceph-fs-sc    Created   1h
    
  8. Проверьте созданный StorageClass:

    d8 k get sc

    В результате будет выведена информация о созданном StorageClass:

    NAME          PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    ceph-rbd-sc   rbd.csi.ceph.com   Delete          WaitForFirstConsumer   true                   15s
    ceph-fs-sc    rbd.csi.ceph.com   Delete          WaitForFirstConsumer   true                   15s
    

Настройка подключения к Ceph-кластеру завершена. Вы можете использовать созданный StorageClass для создания PersistentVolumeClaim в ваших приложениях.