Модуль csi-ceph предназначен для  интеграции DKP с Ceph-кластерами и обеспечивает управление хранилищем на основе RBD (RADOS Block Device) или CephFS. Он позволяет создавать StorageClass в Kubernetes с помощью ресурса CephStorageClass.

Подробнее с описанием модуля можно ознакомиться в разделе документации модуля.

Архитектура модуля

Для упрощения схемы приняты следующие допущения:

  • На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
  • Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.

Архитектура модуля csi-ceph на уровне 2 модели C4 и его взаимодействия с другими компонентами Deckhouse Kubernetes Platform (DKP) изображены на следующей диаграмме:

Архитектура модуля csi-ceph

Компоненты модуля

Модуль состоит из следующих компонентов:

  1. Controller — контроллер, обслуживающий следующие кастомные ресурсы:

    • CephClusterConnection — параметры подключения к кластеру Ceph;
    • CephStorageClass — определяет конфигурацию для создаваемого Kubernetes StorageClass.

    В CephStorageClass задается тип storage-класса (CephFS, RBD), reclaim policy, параметры подключения к кластеру Ceph, а также специфичные для каждого storage-класса дополнительные параметры. В зависимости от типа storage-класса эти параметры используются provisioner’ом CSI-драйвера rbd.csi.ceph.com или cephfs.csi.ceph.com при управлении томами.

    Кастомный ресурс CephMetadataBackup используется в сценариях миграции и восстановления, реализованных хуками модуля, а не основным runtime-контроллером.

    Состоит из следующих контейнеров:

    • controller — основной контейнер;
    • webhooks — сайдкар-контейнер, реализующий вебхук-сервер для проверки стандартных ресурсов StorageClass.
  2. CSI-драйвер (rbd/cephfs) — реализация CSI-драйвера для rbd.csi.ceph.com или cephfs.csi.ceph.com provisioner. Выбор CSI-драйвера выполняется путём задания storage-класса в кастомном ресурсе CephStorageClass.

CSI-драйвер csi-cephfs реализован по типовой архитектуре CSI-драйвера, используемого в DKP.

CSI-драйвер csi-rbd реализован по отличной от типового CSI-драйвера архитектуре.

Взаимодействия модуля

Модуль взаимодействует со следующими компонентами:

  • Kube-apiserver:

    • мониторинг ресурсов PersistentVolume, PersistentVolumeClaim, VolumeAttachment и StorageClass;
    • работа с кастомными ресурсами CephClusterConnection и CephStorageClass;
    • создание ресурса StorageClass.

С модулем взаимодействуют следующие внешние компоненты:

  • Kube-apiserver — валидация ресурсов StorageClass.

Дополнительные ресурсы