VK Cloud logo
Обновлена 15 апреля 2024 г. в 08:50

Хранилище в кластере

Данные в кластере Kubernetes могут храниться несколькими способами: непосредственно в контейнере или на томах (volumes). При хранении данных в контейнере возникают проблемы:

  • При сбое или остановке контейнера данные теряются.
  • Данные контейнера недоступны для других контейнеров, даже если все контейнеры находятся в одном поде.

Чтобы решить эти проблемы, используются тома Kubernetes. Тома имеют разный жизненный цикл в зависимости от сценария использования:

  • У временных томов (ephemeral volume, EV) жизненный цикл совпадает с жизненным циклом пода. Когда под, использующий такой том, прекращает свое существование, том тоже удаляется. Временные тома могут использоваться только одним подом, поэтому объявление томов происходит непосредственно в манифесте пода.

  • У постоянных томов (persistent volume, PV) свой жизненный цикл, не зависящий от жизненного цикла пода. Благодаря разделению жизненных циклов такие тома можно переиспользовать позднее с другими подами. Для работы с постоянными томами поды и другие рабочие нагрузки используют Persistent Volume Claim (PVC).

Чтобы обеспечить работу с PV, в VK Cloud кластеры Kubernetes тесно интегрированы с платформой:

Поддерживаемые типы хранилищ VK Cloud

  • Блочные хранилища:

    • На базе Ceph. Для обеспечения отказоусточивости и сохранности данных хранилище состоит из трех реплик, находящихся в разных серверных стойках. Хранилище может использовать HDD- или SSD-диски.

    • На базе высокопроизводительных NVMe SSD-дисков (High-IOPS SSD). Такое хранилище подключается по протоколу iSCSI. Для обеспечения отказоусточивости и сохранности данных на уровне хранилища применяется аппаратный RAID-10.

  • Файловые хранилища, подключаемые по протоколам NFS и CIFS.

Работа с Container Storage Interface (CSI)

В VK Cloud кластеры Kubernetes используют OpenStack Cinder для интеграции с блочными хранилищами.

Типы хранилищ, доступные в кластере Kubernetes через Cinder CSI, соотносятся с блочными хранилищами VK Cloud следующим образом:

  • Ceph HDD соответствует ceph-hdd в Cinder.
  • Ceph SSD соответствует ceph-ssd в Cinder.
  • High-IOPS SSD соответствует high-iops в Cinder.

Применение Cinder CSI позволяет:

  • Статически (static provisioning) и динамически (dynamic provisioning) подготавливать PV на основе блочных хранилищ.

    При динамической подготовке тома можно использовать преднастроенные классы хранения.

  • Автоматически перемонтировать PV:

    • При сбое пода, использующего том, или worker-узла, на котором находится под (при условии, что под будет восстановлен на этом или другом узле).
    • При миграции пода, использующего том, с одного worker-узла на другой.
  • Управлять хранилищем VK Cloud, которое используется PV:

    • При динамической подготовке тома будет автоматически создан соответствующий этому тому диск в VK Cloud.
    • Если для тома задана политика освобождения Delete, то после удалении PVC будет удален связанный с ним том и соответствующий этому тому диск в VK Cloud.

Доступные политики освобождения постоянных томов

Для PV можно задать политику освобождения (reclaim policy), которая сработает при удалении связанного с этим томом PVC:

  • Оставить том (Retain). PV и связанное с ним хранилище VK Cloud не будут удалены.

    Такая политика применима как для блочных, так и для файловых хранилищ. Используйте ее для PV с важными данными, чтобы защитить данные при случайном удалении PVC. При необходимости можно вручную очистить и удалить PV с этой политикой и связанные с ними хранилища VK Cloud.

  • Удалить том (Delete). PV и связанное с ним хранилище VK Cloud будут удалены.

    Такая политика применима только для блочных хранилищ.

Преднастроенные классы хранения

При использовании динамической подготовки постоянного тома необходимо указать класс хранения. Класс хранения по умолчанию не настроен в кластерах Cloud Containers. Можно выбрать класс по умолчанию самостоятельно, или явно указывать нужный класс явно при создании PVC.

Есть преднастроенные классы хранения, использующие Cinder CSI для блочных хранилищ.

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

Наименование
класса хранения
Тип хранилища
Cinder CSI
Зона
доступности
Reclaim
Policy
csi-ceph-hdd-gz1
ceph-hdd
GZ1
Delete
csi-ceph-hdd-gz1-retain
ceph-hdd
GZ1
Retain
csi-ceph-hdd-ms1
ceph-hdd
MS1
Delete
csi-ceph-hdd-ms1-retain
ceph-hdd
MS1
Retain
csi-ceph-hdd-me1
ceph-hdd
ME1
Delete
csi-ceph-hdd-me1-retain
ceph-hdd
ME1
Retain
csi-ceph-ssd-gz1
ceph-ssd
GZ1
Delete
csi-ceph-ssd-gz1-retain
ceph-ssd
GZ1
Retain
csi-ceph-ssd-ms1
ceph-ssd
MS1
Delete
csi-ceph-ssd-ms1-retain
ceph-ssd
MS1
Retain
csi-ceph-ssd-me1
ceph-ssd
ME1
Delete
csi-ceph-ssd-me1-retain
ceph-ssd
ME1
Retain
csi-high-iops-gz1
high-iops
GZ1
Delete
csi-high-iops-gz1-retain
high-iops
GZ1
Retain
csi-high-iops-ms1
high-iops
MS1
Delete
csi-high-iops-ms1-retain
high-iops
MS1
Retain
csi-high-iops-me1
high-iops
ME1
Delete
csi-high-iops-me1-retain
high-iops
ME1
Retain

Все перечисленные классы хранения:

  • Разрешают увеличение тома (allowVolumeExpansion: true).
  • Используют немедленное выделение и привязку тома (volumeBindingMode: Immediate).

Смотрите также