Обзор
В Kubernetes постоянные тома предназначены для длительного хранения данных. Жизненный цикл постоянного тома не зависит от жизненного цикла использующего этот том пода, и после удаления или перезапуска пода данные остаются доступны.
В сервисе Managed Kubernetes постоянные тома подготавливаются на базе сетевых дисков сервиса Compute. Работать с сетевыми дисками позволяет CSI-драйвер MWS, который автоматически устанавливается в кластер Managed Kubernetes.
Управлять постоянными томами можно с помощью следующих объектов Kubernetes:
- PersistentVolumeClaim (
PVC) — запрос на том. В нем указываются размер тома, режим доступа к тому и ссылка на объектStorageClass. - PersistentVolume (
PV) — том, доступный в кластере. - StorageClass — определяет параметры подготовки и использования тома.
В сервисе Managed Kubernetes поддерживается статическая и динамическая подготовка томов:
- При статической подготовке пользователь вручную создает сетевой диск Compute, а также объекты
PVиPVC. - При динамической подготовке пользователю достаточно создать только объект
PVC. После этого CSI-драйвер автоматически создает сетевой диск Compute и соответствующий ему объектPVс параметрами изStorageClass.
Независимо от способа подготовки тома CSI-драйвер подключает сетевой диск к узлу, на котором запущен под. При переносе пода на другой узел CSI-драйвер переподключает сетевой диск.
По умолчанию в сервисе Managed Kubernetes используется объект StorageClass с именем mws. Он задает для создаваемого сетевого диска производительность в 1000 IOPS. Чтобы указать другое значение IOPS, создайте собственный объект StorageClass.
Зональность сетевых дисков
Заголовок раздела «Зональность сетевых дисков»Сетевые диски Compute — зональные ресурсы. Это значит, что сетевой диск создается в определенной зоне доступности и может быть подключен только к узлам, расположенным в этой же зоне.
Если при динамической подготовке тома используется объект StorageClass по умолчанию, CSI-драйвер создает сетевой диск сразу после создания объекта PVC, не дожидаясь выбора узла для запуска пода. Поэтому диск может оказаться в другой зоне доступности, и подключить его к выбранному узлу не получится.
Чтобы сетевой диск оказался в зоне доступности узла, на котором будет запущен под, создайте новый объект StorageClass с параметром volumeBindingMode: WaitForFirstConsumer, например:
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: mws-with-topologyprovisioner: csi.mws.rureclaimPolicy: DeletevolumeBindingMode: WaitForFirstConsumerallowVolumeExpansion: trueparameters: iops: "10000"В режиме WaitForFirstConsumer сетевой диск создается только после выбора узла для запуска пода. Благодаря этому CSI-драйвер может создать диск в зоне доступности выбранного узла.