Доступно в редакциях: 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-драйвер состоит из следующих компонентов:
- 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.
Жизненный цикл томов
Когда под запрашивает хранилище:
- Создается PVC, ссылающийся на StorageClass, управляемый модулем.
- CSI provisioner создает том на указанном datastore vSphere.
- CSI attacher присоединяет том к соответствующему узлу.
- CSI node driver монтирует том в под.
- vsphere-syncer периодически синхронизирует метаданные для обеспечения согласованности.
Ограничения
- Модуль разработан исключительно для статических (не облачных) кластеров Kubernetes на vSphere.
- Устаревший режим не поддерживает онлайн-изменение размера томов.
- Расширение томов требует текущего CSI-драйвера (
csi.vsphere.vmware.com). - Объекты StorageClass управляются автоматически — ручные изменения могут быть перезаписаны.