The Kubernetes Container Storage Interface (CSI) — это стандартизированный framework для дополнений хранилища, запущенный Cloud Native Computing Foundation (CNCF). Он направлен на отделение систем хранения от Kubernetes, позволяя доступ к сервисам хранилища в виде дополнений без изменения базового кода Kubernetes. CCE container storage построен на основе CSI и поддерживает широкий спектр типов хранилища, включая блочное хранилище, файловое хранилище и объектное хранилище, чтобы удовлетворять потребности как stateless, так и stateful приложений. CSI полностью совместим с нативной системой хранения Kubernetes и поддерживает несколько форм хранилища, таких как emptyDir, hostPath, secret и ConfigMap.
Рисунок 1 Типы контейнерного хранилища

CCE позволяет pods использовать несколько типов хранилища:
Тип | Описание |
|---|---|
CSI | Стандартизированный механизм плагина (соответствующий CCE Everest) разработан для отделения систем хранения от платформ оркестрации, решая проблему тесной привязки традиционных in-tree плагинов хранилища и ядра Kubernetes. Его основной дизайн включает определение единой спецификации интерфейса gRPC, позволяя вендорам хранилища разрабатывать пользовательские плагины хранилища в out-of-tree режиме. Это позволяет независимо осуществлять сборку, компиляцию и выпуск функций хранилища без встраивания исходного кода плагина в репозиторий исходного кода Kubernetes. Вам достаточно объявить свои требования к хранилищу через PVC и PV. Драйвер CSI обрабатывает остальное, обеспечивая динамическое предоставление хранилища и управление. Начиная с Kubernetes 1.13, CSI стал официально рекомендуемой реализацией для плагинов хранилища. |
Нативное хранилище Kubernetes | Запускается в in-tree режиме, где код плагина хранилища встроен непосредственно в репозиторий ядра Kubernetes. Это означает, что плагины хранилища собираются, компилируются и выпускаются вместе с core‑компонентами Kubernetes, такими как kubelet и kube-controller-manager. Плагины хранилища должны обновляться совместно с Kubernetes. Их нельзя разрабатывать, обновлять или расширять независимо от цикла выпуска Kubernetes. Это ограничивает гибкость поддержки сторонних систем хранения. |
Тип | Описание | Сценарий применения |
|---|---|---|
Облачное хранилище | Хранилище предоставляется облачными провайдерами услуг и позволяет сохранять данные в удалённых кластерах через сети. Это обеспечивает централизованное управление и эластичное масштабирование ресурсов хранилища. В кластере вам достаточно задекларировать требования к хранилищу через PVC и PV. Добавление CSI автоматически обрабатывает доступ к облачному хранилищу, устраняя необходимость ручной настройки базовых ресурсов. | Данные требуют высокой доступности или должны быть общими, например, журналы и мультимедийные ресурсы. Выберите подходящий облачный StorageClass в зависимости от сценария применения. Для деталей смотрите Сравнение облачного хранилища. |
Локальное хранилище | Носитель данных — это локальный диск с данными или память узла. Локальный PV — это настроенный StorageClass, предоставляемый CCE и монтируемый с помощью PVC и PV через CSI. Другие StorageClass являются нативными для Kubernetes. | Для данных Non-HA требуется высокая I/O и низкая задержка. Выберите подходящий тип локального хранилища в зависимости от сценария применения. Для деталей смотрите Сравнение локального хранилища. |
Объекты ресурсов Kubernetes | ConfigMaps и secrets являются ресурсами, создаваемыми в кластерах. Это специальные типы хранилища, предоставляемые tmpfs (файловая система на основе ОЗУ) на сервере API Kubernetes. | ConfigMaps используются для внедрения конфигурационных данных в pods. Secrets используются для передачи конфиденциальной информации, такой как пароли, в pods. |
Элемент | EVS | SFS | SFS Turbo | OBS |
|---|---|---|---|---|
Определение | Блочный сервис хранения, работающий в общих пулах ресурсов хранения. Он предлагает масштабируемые, высокопроизводительные и надёжные тома хранения для облачных серверов. Диски EVS доступны в различных спецификациях и являются экономичными. | Расширяемый до петабайт, SFS предоставляет полностью размещённое совместное файловое хранилище, обладающее высокой доступностью и стабильностью, способное обрабатывать интенсивные по данным и пропускной способности приложения в HPC, медиапроизводстве, совместном использовании файлов, управлении контентом и веб‑службах. | Расширяемый до 320 ТБ, SFS Turbo предоставляет полностью размещённое совместное файловое хранилище, которое обладает высокой доступностью и стабильностью, для поддержки небольших файлов и приложений, требующих низкой задержки и высокой IOPS. Вы можете использовать SFS Turbo на веб‑сайтах с высоким трафиком, для хранения логов, сжатия/распаковки, DevOps, enterprise OA и контейнеризованных приложений. | Масштабируемое, безопасное, надёжное и экономичное хранилище для любых типов и размеров данных. Вы можете использовать его в enterprise backup/archiving, video on demand (VoD), видеонаблюдении и многих других сценариях. |
Логика хранения данных | Хранит двоичные данные и не может напрямую хранить файлы. Чтобы хранить файлы, сначала отформатируйте файловую систему. | Хранит файлы и сортирует и отображает данные в иерархии файлов и папок. | Хранит файлы и сортирует и отображает данные в иерархии файлов и папок. | Хранит объекты. Файлы, хранящиеся напрямую, автоматически генерируют системные метаданные, которые также могут быть настроены пользователями. |
Режим доступа | Доступно только после монтирования к ECSs и инициализации. | Монтировано к ECSs с использованием сетевых протоколов. Сетевой адрес должен быть указан или привязан к локальному каталогу для доступа. | Поддерживает протокол Network File System (NFS) (только NFSv3). Вы можете бесшовно интегрировать существующие приложения и инструменты с SFS Turbo. | Доступно через Интернет или Direct Connect (DC). Укажите адрес бакета и используйте протоколы передачи, такие как HTTP или HTTPS. |
Статические тома хранения | Поддерживается. Подробнее см Использование существующего EVS диска через статический PV. | Поддерживается. Подробнее см Использование существующей SFS файловой системы через статический PV. | Поддерживается. Подробнее см Использование существующей SFS Turbo файловой системы через статический PV. | Поддерживается. Подробнее см Использование существующего OBS бакета через статический PV. |
Динамические тома хранения | Поддерживается. Подробнее см Использование EVS диска через динамический PV. | Поддерживается. Для получения подробной информации смотрите Использование файловой системы SFS через динамический PV. | Поддерживается для подкаталогов SFS Turbo. Для получения подробной информации смотрите (Рекомендуется) Создание подкаталога SFS Turbo с использованием динамического PV. | Поддерживается. Для получения подробной информации смотрите Использование Бакета OBS через динамический PV. |
Функции | Несшаровое хранилище. Каждый том может быть смонтирован только на один узел. | Общее хранилище с высокой производительностью и пропускной способностью | Общее хранилище с высокой производительностью и пропускной способностью | Общая файловая система пользовательского режима |
Сценарии применения | HPC, корпоративные core‑кластерные приложения, корпоративные системы приложений и dev/test ПРИМЕЧАНИЕ: HPC‑приложения здесь требуют высокоскоростного и high-IOPS хранилища, такого как промышленный дизайн и поиск энергетических ресурсов. | HPC, медиа‑обработка, управление контентом, веб‑сервисы, big data и аналитические приложения NOTE: HPC‑приложения здесь требуют высокой пропускной способности и общей файловой системы, такой как геномное секвенирование и рендеринг изображений. | Веб‑сайты с высоким трафиком, хранение логов, DevOps и enterprise OA | Big data analytics, статический хостинг веб‑сайтов, онлайн‑видео по запросу (VoD), геномное секвенирование, интеллектуальное видеонаблюдение, бэкап и архивирование, и enterprise cloud boxes (web disks) |
Ёмкость | TB | SFS 1.0: PB | General-purpose: TB | EB |
Задержка | 1–2 ms | SFS 1.0: 3–20 ms | General-purpose: 1–5 ms | 10 ms |
Макс. IOPS | 2,200–256,000, в зависимости от флейворов | SFS 1.0: 2,000 | Общее назначение: до 100,000 | Десятки миллионов |
Пропускная способность | MB/s | SFS 1.0: GB/s | Общее назначение: до GB/s | TB/s |
Элемент | Local PV | Локальный эфемерный том | emptyDir | hostPath |
|---|---|---|---|---|
Определение | Локальные диски узла формируют пул хранилища (VolumeGroup) через LVM. LVM делит их на логические тома (LVs) и монтирует их к подам. | Kubernetes native emptyDir, где локальные диски узла образуют пул хранения (VolumeGroup) через LVM. LVs создаются в качестве носителя хранения emptyDir и монтируются к pod'ам. LVs обеспечивают лучшую производительность, чем носитель хранения по умолчанию emptyDir. | Kubernetes native emptyDir. Его жизненный цикл такой же, как у pod. В качестве носителя хранения можно указать память. При удалении pod volume emptyDir удаляется, и его данные теряются. | Используется для монтирования файлового каталога хоста, где находится pod, в указанную точку монтирования pod. |
Функции | Низкая задержка, высокий I/O и non-HA PV. Тома хранения являются необщим хранилищем и привязываются к узлам через метки. Поэтому тома хранения могут монтироваться только к одному pod. | Локальный эфемерный том. Объём хранения берётся из локальных LV. | Локальный эфемерный том. Объём хранения берётся из локального корневого каталога kubelet или памяти. | Используется для монтирования файлов или каталогов файловой системы хоста. Каталоги хоста могут создаваться автоматически. Pod'ы могут мигрировать (не привязаны к узлам). |
Монтирование тома хранения | Статические тома хранения не поддерживаются. Использование локального PV через динамический PV поддерживается. | Для получения деталей см Локальный EV. | Для получения деталей см Временный путь. | Для получения деталей см hostPath. |
Сценарии применения | Высокие требования к I/O и встроенные HA‑решения приложений, например, развертывание MySQL в режиме HA. |
|
| Требуется файл узла, например, если используется Docker, можно использовать hostPath для монтирования /var/lib/docker путь узла. NOTICE: Избегайте использования томов hostPath насколько это возможно, так как они подвержены рискам безопасности. Если тома hostPath необходимо использовать, они могут быть применены только к файлам или каталогам и монтироваться в режиме только для чтения. |
Чтобы использовать эту функцию, дополнение Everest должно быть обновлено до версии v1.2.33 или более новой.
При создании EVS или OBS PVC с использованием StorageClass в CCE можно указать enterprise‑проект, чтобы привязать созданные ресурсы хранилища (диски EVS и OBS) к этому проекту. Этот enterprise‑проект может быть как проектом по умолчанию, так и тем же проектом, к которому принадлежит кластер.
Если enterprise project не указан, enterprise project, указанный в StorageClass, будет использоваться по умолчанию для создания ресурсов хранения.
При создании PVC с использованием PV убедитесь, что everest.io/enterprise-project-id указанные в PVC и PV совпадают, поскольку enterprise project был указан при создании ресурса хранения. В противном случае PVC и PV не могут быть связаны.