Доступно в редакциях:  SE+, EE

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

Модуль csi-vsphere предоставляет поддержку Container Storage Interface (CSI) для сред VMware vSphere, обеспечивая динамическое предоставление и управление постоянными томами хранения в кластерах Kubernetes, работающих на инфраструктуре vSphere.

Этот модуль специально разработан для статических кластеров Kubernetes (не облачных), развернутых на VMware vSphere, и работает независимо от модуля cloud-provider-vsphere. Он интегрируется с datastores vSphere для предоставления возможностей постоянного хранения через CSI-драйвер vSphere.

Модуль развертывает компоненты VMware vSphere CSI-драйвера, которые:

  • Автоматически обнаруживают datastores vSphere — читает данные обнаружения из секрета d8-cloud-provider-discovery-data для идентификации доступных datastores и их топологии.
  • Создают StorageClass — автоматически генерирует ресурсы StorageClass для каждого обнаруженного datastore, отфильтрованные по списку исключений при настройке.
  • Предоставляют постоянные тома — динамически создает постоянные тома на datastores vSphere при создании PersistentVolumeClaim.
  • Поддерживают операции с томами — обрабатывает создание, удаление, присоединение, отсоединение томов и онлайн-изменение размера (в Режиме по умолчанию).
  • Реализуют топологическую осведомленность — использует метки зон и регионов для правильного размещения томов в соответствии с топологией кластера vSphere.

Архитектура

CSI-драйвер состоит из следующих компонентов:

  1. CSI Controller (работает на master-узлах):
    • vsphere-csi-controller — основной контроллер, управляющий жизненным циклом томов.
    • csi-provisioner — следит за PVC и запускает создание томов.
    • csi-attacher — обрабатывает присоединение томов к узлам.
    • csi-resizer — управляет онлайн-расширением томов.
    • vsphere-syncer — синхронизирует метаданные между Kubernetes и vSphere каждые 30 минут.
    • liveness-probe — мониторит здоровье контроллера.
  2. 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) тома,
    • есть поддержка онлайн-изменения размера томов,
    • рекомендуется для новых развертываний.
  • Устаревший режим (compatibilityFlag: "Legacy"):
    • использует старый CSI-драйвер vSphere (vsphere.csi.vmware.com),
    • работает только с FCD (First Class Disk) томами,
    • нет поддержки онлайн-изменения размера,
    • используется для обратной совместимости.
  • Режим миграции (compatibilityFlag: "Migration"):
    • использует обе версии драйвера одновременно,
    • облегчает миграцию из устаревшего (Legacy) в Режим по умолчанию (Default),
    • позволяет постепенный переход рабочих нагрузок.

Обнаружение и предоставление хранения

Модуль автоматически:

  1. Обнаруживает datastores из данных обнаружения облачного провайдера.
  2. Генерирует имена StorageClass путем очистки имен datastores для соответствия требованиям именования DNS Kubernetes.
  3. Фильтрует исключенное хранилище на основе конфигурации storageClass.exclude (поддерживает regex-шаблоны).
  4. Создает StorageClass с соответствующими параметрами:
    • allowVolumeExpansion: true (только Режим по умолчанию),
    • volumeBindingMode: WaitForFirstConsumer — гарантирует создание томов в той же зоне, в которой создаются поды;
    • топологические ограничения, соответствующие регионам и зонам vSphere.

Жизненный цикл томов

Когда под запрашивает хранилище:

  1. Создается PVC, ссылающийся на StorageClass, управляемый модулем.
  2. CSI provisioner создает том на указанном datastore vSphere.
  3. CSI attacher присоединяет том к соответствующему узлу.
  4. CSI node driver монтирует том в под.
  5. vsphere-syncer периодически синхронизирует метаданные для обеспечения согласованности.

Ограничения

  • Модуль разработан исключительно для статических (не облачных) кластеров Kubernetes на vSphere.
  • Устаревший режим не поддерживает онлайн-изменение размера томов.
  • Расширение томов требует текущего CSI-драйвера (csi.vsphere.vmware.com).
  • Объекты StorageClass управляются автоматически — ручные изменения могут быть перезаписаны.