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

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

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

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

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

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

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

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

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

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

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

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

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

В 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).