Доступно в редакциях:  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 в Modern режим
    • Позволяет постепенный переход рабочих нагрузок

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

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

  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-драйвера
  • StorageClass’ы управляются автоматически — ручные изменения могут быть перезаписаны