Доступно в редакциях: SE+, EE
Стадия жизненного цикла модуля: Deprecated
Модуль csi-vsphere предоставляет поддержку Container Storage Interface (CSI) для сред VMware vSphere, обеспечивая динамическое предоставление и управление постоянными томами хранения в кластерах Kubernetes, работающих на инфраструктуре vSphere.
Используйте модуль csi-vsphere, когда в кластере отсутствует возможность применять модуль cloud-provider-vsphere, но требуется динамический заказ томов в инфраструктуре vSphere.
Этот модуль специально разработан для статических кластеров Kubernetes (не облачных), развернутых на VMware vSphere, и работает независимо от модуля cloud-provider-vsphere. Он интегрируется с datastores vSphere для предоставления возможностей постоянного хранения через CSI-драйвер vSphere.
Основные возможности
- Обеспечивает динамический заказ постоянных томов для статических кластеров Kubernetes на VMware vSphere.
- Автоматически обнаруживает datastores vSphere и создаёт ресурсы StorageClass.
- Поддерживает топологически осведомлённое размещение томов с помощью тегов регионов и зон vSphere.
- Обрабатывает создание, удаление, присоединение, отсоединение томов и онлайн-изменение размера (режим по умолчанию).
- Поддерживает режимы совместимости Legacy, Default и Migration для плавного перехода между версиями драйвера.
Модуль развертывает компоненты VMware vSphere CSI-драйвера, которые:
- Автоматически обнаруживают datastores vSphere — читает данные обнаружения из секрета
d8-cloud-provider-discovery-dataдля идентификации доступных datastores и их топологии. - Создают StorageClass — автоматически генерирует ресурсы StorageClass для каждого обнаруженного datastore, отфильтрованные по списку исключений при настройке.
- Предоставляют постоянные тома — динамически создает постоянные тома на datastores vSphere при создании PersistentVolumeClaim.
- Поддерживают операции с томами — обрабатывает создание, удаление, присоединение, отсоединение томов и онлайн-изменение размера (в Режиме по умолчанию).
- Реализуют топологическую осведомленность — использует лейблы зон и регионов для правильного размещения томов в соответствии с топологией кластера vSphere.
Системные требования
Для использования модуля в кластере необходимо соблюдение следующих системных требований:
- Все виртуальные машины кластера должны быть созданы с использованием инструментов vSphere.
- Имя виртуальной машины в vSphere должно точно совпадать с именем узла (hostname) в кластере Deckhouse Kubernetes Platform.
- В настройках каждой виртуальной машины необходимо включить параметр
disk.EnableUUID:TRUE. Он обеспечивает корректную работу модуля с дисковыми ресурсами и позволяет DKP идентифицировать подключенные тома.
Архитектура
CSI-драйвер состоит из следующих компонентов:
- CSI Controller (работает на master-узлах):
- vsphere-csi-controller — основной контроллер, управляющий жизненным циклом томов.
- csi-provisioner — следит за PVC и запускает создание томов.
- csi-attacher — обрабатывает присоединение томов к узлам.
- csi-resizer — управляет онлайн-расширением томов.
- vsphere-syncer — синхронизирует метаданные между Kubernetes и vSphere каждые 30 минут.
- liveness-probe — мониторит здоровье контроллера.
- CSI Node (DaemonSet на всех узлах):
- vsphere-csi-node — узловой CSI-драйвер, обрабатывающий монтирование/размонтирование томов.
- node-driver-registrar — регистрирует CSI-драйвер в kubelet.
- liveness-probe — мониторит здоровье узлового драйвера.
Режимы совместимости
Модуль поддерживает следующие режимы работы (режим устанавливается через параметр compatibilityFlag):
- Режим по умолчанию (используется по умолчанию,
compatibilityFlagне установлен или пустой):- использует текущий CSI-драйвер vSphere (
csi.vsphere.vmware.com), - поддерживает CNS (Cloud Native Storage) тома,
- есть поддержка онлайн-изменения размера томов,
- рекомендуется для новых развертываний.
- использует текущий CSI-драйвер vSphere (
- Устаревший режим (
compatibilityFlag: "Legacy"):- использует старый CSI-драйвер vSphere (
vsphere.csi.vmware.com), - работает только с FCD (First Class Disk) томами,
- нет поддержки онлайн-изменения размера,
- используется для обратной совместимости.
- использует старый CSI-драйвер vSphere (
- Режим миграции (
compatibilityFlag: "Migration"):- использует обе версии драйвера одновременно,
- облегчает миграцию из устаревшего (Legacy) в Режим по умолчанию (Default),
- позволяет постепенный переход рабочих нагрузок.
Обнаружение и предоставление хранения
Модуль автоматически:
- Обнаруживает datastores из данных обнаружения облачного провайдера.
- Генерирует имена StorageClass путем очистки имен datastores для соответствия требованиям именования DNS Kubernetes.
- Фильтрует исключенное хранилище на основе конфигурации
storageClass.exclude(поддерживает regex-шаблоны). - Создает StorageClass с соответствующими параметрами:
allowVolumeExpansion: true(только Режим по умолчанию),volumeBindingMode: WaitForFirstConsumer— гарантирует создание томов в той же зоне, в которой создаются поды;- топологические ограничения, соответствующие регионам и зонам vSphere.
Настройка StorageClass по умолчанию
Модуль автоматически создает StorageClass для каждого Datastore и DatastoreCluster из зон.
Чтобы задать StorageClass по умолчанию для кластера, используйте глобальный параметр defaultClusterStorageClass. Чтобы отфильтровать ненужные объекты StorageClass, задайте шаблоны исключений в параметре storageClass.exclude.
Жизненный цикл томов
Когда под запрашивает хранилище:
- Создается PVC, ссылающийся на StorageClass, управляемый модулем.
- CSI provisioner создает том на указанном datastore vSphere.
- CSI attacher присоединяет том к соответствующему узлу.
- CSI node driver монтирует том в под.
- vsphere-syncer периодически синхронизирует метаданные для обеспечения согласованности.
Ограничения
- Модуль разработан исключительно для статических (не облачных) кластеров Kubernetes на vSphere.
- Устаревший режим не поддерживает онлайн-изменение размера томов.
- Расширение томов требует текущего CSI-драйвера (
csi.vsphere.vmware.com). - Объекты StorageClass управляются автоматически — ручные изменения могут быть перезаписаны.