Поддержка Container Storage Interface

Хранить данные для работы приложений можно в самих контейнерах, но есть ограничения:

  • Данные, хранящиеся в контейнере, недоступны для других контейнеров пода.

  • Если контейнер работает некорректно, kubelet может перезагрузить его. При этом данные теряются, а контейнер перезапустится с чистым состоянием.

Подключение постоянного хранилища решает перечисленные проблемы.

В Kubernetes предоставлять блочные или объектные хранилища для контейнеров позволяет драйвер Container Storage Interface (CSI), который расширяет возможности хранения данных для контейнерных приложений.

CSI и S3 CSI-драйверы

Managed Kubernetes поддерживает спецификацию Container Storage Interface. В качестве постоянных томов можно подключать диски и объектное хранилище.

Для работы с дисками необходим CSI Driver, для работы с объектным хранилищем — S3 CSI Driver.

После установки драйверов в кластер Managed Kubernetes пользователи смогут подключать и монтировать постоянные тома к подам.

CSI Driver и S3 CSI Driver можно установить после создания кластера как плагин.

Ограничения и особенности

В зависимости от типа используемого хранилища действуют разные ограничения.

Диски

Поддерживается только режим ReadWriteOnce. Допустимый размер диска для монтирования — от 1 ГБ до 16 ТБ, кратный 1 ГБ.

После создания постоянного тома его размер нельзя уменьшить. Увеличение размера тома разрешено по умолчанию.

К одному рабочему узлу можно примонтировать не более восьми дисков. Важно соблюдать это ограничение, иначе поды, запланированные на узле, могут бесконечно ожидать подключения томов.

Подробнее об ограничениях — в документации сервиса «Диски».

Объектное хранилище Object Storage

Поддерживается только режим ReadWriteMany.

Минимальный размер бакета для монтирования — 1 МБ. Количество бакетов на проект ограничено квотами сервиса Object Storage и может быть изменено по запросу в техническую поддержку.

Подробнее об ограничениях — в документации сервиса Object Storage.

Примеры работы с постоянными томами

Примеры манифестов на создание Persistent Volume Claim, выделение и подключение постоянного тома к поду, а также удаление тома описаны в разделе Работа с постоянными томами в Evolution Managed Kubernetes.

Пример работы со StatefulSet описан в разделе Управление рабочими нагрузками в Evolution Managed Kubernetes.

Evolution