PersistentVolumeClaim
apiVersion: v1
import "k8s.io/api/core/v1"
PersistentVolumeClaim
PersistentVolumeClaim — это запрос пользователя и претензия на постоянный том
apiVersion: v1
kind: PersistentVolumeClaim
-
metadata (ObjectMeta)
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
spec (PersistentVolumeClaimSpec)
spec определяет желаемые характеристики тома, запрошенного автором под. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
-
status (PersistentVolumeClaimStatus)
status представляет текущую информацию/статус запроса постоянного тома. Только для чтения. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
PersistentVolumeClaimSpec
PersistentVolumeClaimSpec описывает общие атрибуты устройств хранения и позволяет указать источник для атрибутов, специфичных для поставщика.
-
accessModes ([]string)
Атомарно: будет заменено при слиянии
accessModes содержит желаемые режимы доступа, которые должен иметь том. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
-
selector (LabelSelector)
selector — это запрос метки по томам для рассмотрения при привязке.
-
resources (VolumeResourceRequirements)
resources представляет минимальные ресурсы, которые должен иметь том. Если функция RecoverVolumeExpansionFailure включена, пользователям разрешается указывать требования к ресурсам, которые ниже предыдущего значения, но должны быть все еще выше, чем емкость, записанная в поле status запроса. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
VolumeResourceRequirements описывает требования к ресурсам хранения для тома.
-
resources.limits (map[string]Quantity)
Limits описывает максимальное количество разрешенных вычислительных ресурсов. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
resources.requests (map[string]Quantity)
Requests описывает минимальное количество необходимых вычислительных ресурсов. Если Requests не указано для контейнера, оно по умолчанию равно Limits, если это явно указано, иначе — определенное реализацией значение. Requests не может превышать Limits. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
volumeName (string)
volumeName — это ссылка на привязку к PersistentVolume, поддерживающему этот запрос.
-
storageClassName (string)
storageClassName — это имя StorageClass, требуемое запросом. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
volumeMode (string)
volumeMode определяет тип тома, требуемого запросом. Значение Filesystem подразумевается, если оно не включено в спецификацию запроса.
Уровень бета-версии
-
dataSource (TypedLocalObjectReference)
Поле dataSource может использоваться для указания: * существующего объекта VolumeSnapshot (snapshot.storage.k8s.io/VolumeSnapshot) * существующего PVC (PersistentVolumeClaim) Если поставщик или внешний контроллер могут поддерживать указанный источник данных, он создаст новый том на основе содержимого указанного источника данных. При включении функции AnyVolumeDataSource содержимое dataSource будет скопировано в dataSourceRef, а содержимое dataSourceRef — в dataSource, если namespace в dataSourceRef не указан. Если namespace указан, то dataSourceRef не будет скопирован в dataSource.
-
dataSourceRef (TypedObjectReference)
dataSourceRef указывает объект, из которого нужно заполнить том данными, если нужен непустой том. Это может быть любой объект из непустой API-группы (объект не из core) или объект PersistentVolumeClaim. При указании этого поля привязка тома будет успешной только в том случае, если тип указанного объекта соответствует какому-либо установленному поставщику томов или динамическому поставщику. Это поле заменит функциональность поля dataSource, и, следовательно, если оба поля непустые, они должны иметь одинаковое значение. Для обратной совместимости, когда namespace не указан в dataSourceRef, оба поля (dataSource и dataSourceRef) будут автоматически установлены в одно и то же значение, если одно из них пустое, а другое — нет. Когда namespace указан в dataSourceRef, dataSource не устанавливается в то же значение и должен быть пустым. Есть три важных различия между dataSource и dataSourceRef: * В то время как dataSource допускает только два определённых типа объектов, dataSourceRef допускает любые объекты, не из core, а также объекты PersistentVolumeClaim. * В то время как dataSource игнорирует недопустимые значения (удаляет их), dataSourceRef сохраняет все значения и генерирует ошибку, если указано недопустимое значение. * В то время как dataSource допускает только локальные объекты, dataSourceRef допускает объекты в любых именах пространства имён. (Бета) Использование этого поля требует, чтобы функция AnyVolumeDataSource была включена. (Альфа) Использование поля namespace в dataSourceRef требует, чтобы функция CrossNamespaceVolumeDataSource была включена.
-
dataSourceRef.kind (string), required
Kind — это тип ресурса, на который ссылаются
-
dataSourceRef.name (string), required
Name — это имя ресурса, на который ссылаются
-
dataSourceRef.apiGroup (string)
APIGroup — это группа для ресурса, на который ссылаются. Если APIGroup не указан, указанный Kind должен находиться в core API-группе. Для любых других сторонних типов APIGroup требуется.
-
dataSourceRef.namespace (string)
Namespace — это пространство имён ресурса, на который ссылаются. Обратите внимание, что при указании имени пространства имён требуется объект gateway.networking.k8s.io/ReferenceGrant в пространстве имён объекта ссылки, чтобы разрешить владельцу этого пространства имён принять ссылку. См. документацию ReferenceGrant для получения подробностей. (Альфа) Это поле требует включения функции CrossNamespaceVolumeDataSource.
-
-
volumeAttributesClassName (string)
volumeAttributesClassName можно использовать для установки VolumeAttributesClass, используемого этим запросом. Если указано, драйвер CSI создаст или обновит том с атрибутами, определенными в соответствующем VolumeAttributesClass. Это имеет другое назначение, чем storageClassName, его можно изменить после создания запроса. Пустое строковое значение означает, что никакой VolumeAttributesClass не будет применён к запросу, но его нельзя сбросить на пустую строку после установки. Если не указано и PersistentVolumeClaim не привязан, контроллер persistentvolume установит значение по умолчанию VolumeAttributesClass, если оно существует. Если ресурс, на который ссылается volumeAttributesClass, не существует, этот PersistentVolumeClaim будет переведён в состояние Pending, как отражается в поле modifyVolumeStatus, до тех пор, пока такой ресурс не будет существовать. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Бета) Использование этого поля требует включения функции VolumeAttributesClass (по умолчанию отключена).
PersistentVolumeClaimStatus
PersistentVolumeClaimStatus — это текущий статус запроса постоянного тома.
-
accessModes ([]string)
Атомарно: будет заменено во время слияния
accessModes содержит фактические режимы доступа к объёму, на котором основан PVC. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
-
allocatedResourceStatuses (map[string]string)
allocatedResourceStatuses хранит состояние ресурса, который изменяется в размерах для данного PVC. Имена ключей следуют стандартной синтаксической конструкции меток Kubernetes. Допустимые значения: * Ключи без префиксов: - storage — объём хранилища. * Для пользовательских ресурсов необходимо использовать имена, определяемые реализацией, такие как "example.com/my-custom-resource". Помимо указанных значений, ключи без префиксов или с префиксом kubernetes.io считаются зарезервированными и не должны использоваться.
ClaimResourceStatus может находиться в следующих состояниях: - ControllerResizeInProgress: Состояние устанавливается, когда контроллер начала изменение размера объёма в контрольной плоскости. - ControllerResizeFailed: Состояние устанавливается, когда изменение размера объёма завершилось ошибкой в контроллере. - NodeResizePending: Состояние устанавливается, когда контроллер завершил изменение размера объёма, но дальнейшее изменение размера объёма необходимо на узле. - NodeResizeInProgress: Состояние устанавливается, когда kubelet начинает изменение размера объёма. - NodeResizeFailed: Состояние устанавливается, когда изменение размера объёма завершилось ошибкой в kubelet с терминальной ошибкой. Временные ошибки не устанавливают NodeResizeFailed. Например: при расширении PVC для увеличения ёмкости — это поле может принимать следующие состояния: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" Если это поле не задано, это означает, что для данного PVC нет операции изменения размера в процессе.
Контроллер, который получает обновление PVC с ранее неизвестным resourceName или ClaimResourceStatus, должен игнорировать это обновление для целей, для которых он предназначен. Например, контроллер, который отвечает только за изменение размера ёмкости объёма, должен игнорировать обновления PVC, которые изменяют другие допустимые ресурсы, связанные с PVC.
Это поле alpha и требует включения функции RecoverVolumeExpansionFailure.
-
allocatedResources (map[string]Quantity)
allocatedResources отслеживает ресурсы, выделенные PVC, включая его ёмкость. Имена ключей следуют стандартной синтаксической конструкции меток Kubernetes. Допустимые значения: * Ключи без префиксов: - storage — объём хранилища. * Для пользовательских ресурсов необходимо использовать имена, определяемые реализацией, такие как "example.com/my-custom-resource". Помимо указанных значений, ключи без префиксов или с префиксом kubernetes.io считаются зарезервированными и не должны использоваться.
Отчётная ёмкость здесь может быть больше фактической ёмкости, когда запрашивается операция расширения объёма. Для квоты хранилища используется большее значение из allocatedResources и PVC.spec.resources. Если allocatedResources не задан, для расчёта квоты используется только PVC.spec.resources. Если запрос на ёмкость расширения объёма уменьшается, allocatedResources уменьшается только в том случае, если нет операций расширения в процессе и если фактическая ёмкость объёма равна или меньше запрошенной ёмкости.
Контроллер, который получает обновление PVC с ранее неизвестным resourceName, должен игнорировать это обновление для целей, для которых он предназначен. Например, контроллер, который отвечает только за изменение размера ёмкости объёма, должен игнорировать обновления PVC, которые изменяют другие допустимые ресурсы, связанные с PVC.
Это поле alpha и требует включения функции RecoverVolumeExpansionFailure.
-
capacity (map[string]Quantity)
capacity представляет собой фактические ресурсы базового объёма.
-
conditions ([]PersistentVolumeClaimCondition)
Стратегия исправления: слияние по ключу
typeКарта: уникальные значения по ключу type будут сохранены во время слияния
conditions — текущее состояние Persistent Volume Claim. Если базовый Persistent Volume изменяется в размерах, то состояние устанавливается в 'Resizing'.
PersistentVolumeClaimCondition содержит подробную информацию о состоянии pvc
conditions.status (string), необходимо
conditions.type (string), необходимо
-
conditions.lastProbeTime (Time)
lastProbeTime — время, когда мы проверяли состояние.
Time — это обёртка вокруг time.Time, которая поддерживает корректную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.
-
conditions.lastTransitionTime (Time)
lastTransitionTime — время, когда состояние перешло из одного статуса в другой.
Time — это обёртка вокруг time.Time, которая поддерживает корректную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.
-
conditions.message (string)
message — удобочитаемое сообщение, указывающее подробности о последнем переходе.
-
conditions.reason (string)
reason — уникальная, краткая, понятная для машины строка, объясняющая причину последнего перехода состояния. Если она сообщает "Resizing", это означает, что базовый Persistent Volume изменяется в размерах.
-
currentVolumeAttributesClassName (string)
currentVolumeAttributesClassName — текущее имя VolumeAttributesClass, используемого PVC. Если не задано, к этому PersistentVolumeClaim не применяется VolumeAttributeClass. Это поле beta и требует включения функции VolumeAttributesClass (отключено по умолчанию).
-
modifyVolumeStatus (ModifyVolumeStatus)
ModifyVolumeStatus представляет собой объект состояния операции ControllerModifyVolume. Когда это не установлено, попытка ModifyVolume не предпринимается. Это поле beta и требует включения функции VolumeAttributesClass (отключено по умолчанию).
ModifyVolumeStatus представляет собой объект состояния операции ControllerModifyVolume
-
modifyVolumeStatus.status (string), необходимо
status — состояние операции ControllerModifyVolume. Оно может находиться в следующих состояниях:
- Pending Pending означает, что PersistentVolumeClaim не может быть изменён из-за невыполненных требований, таких как отсутствие указанного VolumeAttributesClass.
- InProgress InProgress означает, что объём изменяется.
- Infeasible Infeasible означает, что запрос был отклонен как недопустимый драйвером CSI. Для исправления ошибки необходимо указать допустимый VolumeAttributesClass. Примечание: в будущем могут быть добавлены новые статусы. Потребители должны проверять неизвестные статусы и соответствующим образом обрабатывать ошибки.
-
modifyVolumeStatus.targetVolumeAttributesClassName (string)
targetVolumeAttributesClassName — имя VolumeAttributesClass, который в настоящее время согласовывается с PVC
-
-
phase (string)
phase представляет собой текущую фазу PersistentVolumeClaim.
СписокPersistentVolumeClaim
PersistentVolumeClaimList — это список элементов PersistentVolumeClaim.
apiVersion: v1
kind: PersistentVolumeClaimList
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
-
items ([]PersistentVolumeClaim), необходимо
items — список persistent volume claims. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/