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