VK Cloud logo

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

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

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

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

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

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

В Managed Containers доступ к Persistent Volume Claim в режиме ReadWriteMany (RWX) не реализован. Это значит, что вы не можете одновременно записывать данные в один PV из нескольких подов на разных узлах.

Чтобы организовать общий доступ к данным из нескольких подов на разных узлах, разверните NFS-сервер на отдельной виртуальной машине. NFS-сервер предоставляет общий доступ к данным по сети, позволяя нескольким подам одновременно читать и записывать данные в общий том.

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

Управление постоянными томами (PV)

В сервисе Managed Containers можно управлять PV, созданными для кластеров Kubernetes. Такие PV находятся в сервисном проекте, которым управляет платформа VK Cloud. Чтобы при удалении или перемещении кластера не потерять доступ к данным, расположенным на таких PV, вы можете переместить их в свой проект из сервисного.

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

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

    • На базе Ceph. Для обеспечения отказоустойчивости и сохранности данных хранилище состоит из трех реплик, находящихся в разных серверных стойках. Хранилище использует 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 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 будут удалены.

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

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

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

В Managed Containers есть преднастроенные классы хранения, использующие Cinder CSI для блочных хранилищ. Они предоставляют разные типы хранилищ, которые вы можете использовать при динамической подготовке постоянного тома:

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

Наименование класса хранения

Тип хранилища Cinder CSI

Зона доступности

Reclaim Policy

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-ceph-hdd-gz1

ceph-hdd

GZ1

Delete

csi-ceph-hdd-gz1-retain

ceph-hdd

GZ1

Retain

csi-ceph-hdd-me1

ceph-hdd

ME1

Delete

csi-ceph-hdd-me1-retain

ceph-hdd

ME1

Retain

csi-ceph-hdd-ms1

ceph-hdd

MS1

Delete

csi-ceph-hdd-ms1-retain

ceph-hdd

MS1

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

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

Была ли статья полезна?