Том
Данные для работы приложений в контейнерах можно хранить в самих контейнерах, но при этом возникают проблемы:
- Когда контейнер аварийно завершает работу,
kubelet
перезапускает его, но файлы теряются — контейнер запускается с чистым состоянием. - Файлы в контейнере недоступны для других контейнеров, работающих в том же поде.
Эти проблемы решаются с помощью томов Kubernetes.
Для работы с томами Kubernetes оперирует объектами API Kubernetes: Volume
, PersistentVolume
, PersistentVolumeClaim
, StorageClass
.
Том
Том — общее хранилище для совместного использования объектами в разных контейнерах, развернутых в пределах одного или нескольких подов. Пользователь указывает в спецификации пода тома, которые будет содержать под, и путь, по которому контейнеры монтируют эти тома.
Тома разделяются согласно их жизненному циклу:
- Временные (
Volume
) — имеют то же время жизни, что и содержащие их поды. Эти тома создаются при создании пода и сохраняются при перезапуске контейнера. Когда под останавливается или удаляется, его тома уничтожаются. - Постоянные (
PersistentVolume
) — имеют свой собственный жизненный цикл. В этих томах данные сохраняются при удалении пода. Том можно размонтировать, например, для переноса данных на другой под или узел.
Временные и постоянные тома могут быть разных типов, в зависимости от хранилища. Ознакомьтесь с типами томов, поддерживаемых в Kubernetes.
Работа с постоянными томами
Работа с постоянными томами Kubernetes осуществляется с помощью объектов API PersistentVolume
и PersistentVolumeClaim
.
-
PersistentVolumes
, PV — это ресурсы кластера Kubernetes, которые существуют независимо от подов. Это означает, что диск и данные, предоставленные PV, продолжают существовать при изменении кластера, а также при удалении и повторном создании подов.Ресурсы объекта
PersistentVolume
могут быть подготовлены динамически с помощью объектовPersistentVolumeClaims
или заранее созданы администратором кластера Kubernetes. -
PersistentVolumeClaim
, PVC — используются для указания объектовPersistentVolumes
в спецификации пода, так как объектыPersistentVolumes
не могут быть указаны напрямую.Объекты
PersistentVolumeClaim
запрашивают определенный размер, режим доступа и класс хранилищ для объектаPersistentVolume
. Если объектPersistentVolume
, удовлетворяющий запросу, существует или может быть подготовлен, объектPersistentVolumeClaim
связывается с необходимым объектомPersistentVolume
. Кластер Kubernetes монтирует объектPersistentVolumeClaim
в качестве тома для пода.
Пользователям часто необходимы объекты PersistentVolumes
с различными свойствами. Администраторы кластеров Kubernetes могут предлагать различные объекты PersistentVolumes
благодаря классам хранилищ.
Подготовка томов
В Managed Service for Kubernetes можно использовать объекты PersistentVolumes
на основе дисков Compute Cloud. Тип используемого диска и другие параметры можно установить с помощью соответствующих классов хранилищ.
Предупреждение
Диски Compute Cloud создаются в определенной зоне доступности. Это влияет на то, где могут быть перезапущены поды.
При удалении кластера Kubernetes объекты PersistentVolumeClaim
и диски Compute Cloud для динамически и статически созданных объектов PersistentVolumes
не удаляются автоматически.
Динамическая подготовка тома
В большинстве случаев нет необходимости вручную создавать объекты PersistentVolumes
и диски Compute Cloud. Вместо этого можно создать объекты PersistentVolumeClaim
, и Kubernetes автоматически подготовит необходимый объект PersistentVolume
и создаст диск.
Как динамически подготовить том читайте в разделе Динамическая подготовка тома.
Статическая подготовка тома
Помимо создания новых дисков для подготовки объектов PersistentVolumes
, вы можете использовать уже существующие диски Облака.
Подробнее о статической подготовке тома с использованием облачных дисков читайте в разделе Статическая подготовка тома.
Удаление томов
В зависимости от настроек объектов PersistentVolume
и PersistentVolumeClaim
соответствующие тома и диски могут удаляться автоматически или вручную.
-
При динамической подготовке тома: после удаления объекта
PersistentVolumeClaim
на основе классов хранилищyc-network-hdd
илиyc-network-ssd
, соответствующие объектPersistentVolume
и диск Compute Cloud будут удалены. -
При статической подготовке тома: вы можете указать, нужно ли удалять диск Compute Cloud при удалении объекта
PersistentVolumeClaim
. Для этого воспользуйтесь параметромpersistentVolumeReclaimPolicy
в PersistentVolumeSpec. По умолчанию для статически подготовленных подов используется значениеRetain
и диск Compute Cloud не удаляется.
Подробнее о томах читайте в документации Kubernetes.