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)
Специфікація визначає бажані характеристики тому, запитаного автором Podʼа. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
status (PersistentVolumeClaimStatus)
Статус представляє поточну інформацію/стан запиту на постійний том. Тільки для читання. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
PersistentVolumeClaimSpec
PersistentVolumeClaimSpec описує загальні атрибути пристроїв зберігання та дозволяє вказувати джерело для атрибутів, специфічних для постачальника.
accessModes ([]string)
Atomic: буде замінено під час злиття
accessModes містить бажані режими доступу, якими повинен користуватися том. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
selector (LabelSelector)
selector — це запит мітки для томів, які слід враховувати при звʼязуванні.
resources (VolumeResourceRequirements)
resources представляє мінімальні ресурси, якими повинен володіти том. Якщо включено можливість RecoverVolumeExpansionFailure, користувачам дозволяється вказувати вимоги до ресурсів, які нижчі за попереднє значення, але все ще мають бути вищими, ніж місткість, вказана в полі статусу вимоги. Додаткова інформація: 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, якщо це явно вказано, інакше — як значення, визначене реалізацією. Запити не можуть перевищувати Limits. Додаткова інформація: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
volumeName (string)
volumeName — це посилання на звʼязування з постійним томом, що підтримує цей запит.
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, коли не вказано dataSourceRef.namespace. Якщо вказано простір імен, то dataSourceRef не буде скопійовано до dataSource.
dataSourceRef (TypedObjectReference)
dataSourceRef вказує на обʼєкт, з якого потрібно заповнити том даними, якщо потрібний непорожній том. Це може бути будь-який обʼєкт з непорожньої API-групи (не базовий обʼєкт) або обʼєкт PersistentVolumeClaim. Коли вказано це поле, звʼязування тому вдасться тільки в тому випадку, якщо тип вказаного обʼєкта відповідає якомусь встановленому наповнювачу тому або динамічному провайдеру. Це поле замінить функціональність поля dataSource і як таке, якщо обидва поля непорожні, вони повинні мати однакове значення. Для забезпечення зворотної сумісності, коли простір імен не вказано в dataSourceRef, обидва поля (dataSource та dataSourceRef) будуть автоматично встановлені в одне значення, якщо одне з них порожнє, а інше — непорожнє. Коли простір імен вказаний в dataSourceRef, dataSource не встановлюється в те ж саме значення і повинно бути порожнім. Є три важливі відмінності між dataSource та dataSourceRef:
- Поки dataSource дозволяє лише два конкретних типи обʼєктів, dataSourceRef дозволяє будь-які не базові обʼєкти, а також обʼєкти PersistentVolumeClaim.
- Поки dataSource ігнорує заборонені значення (вилучаючи їх), dataSourceRef зберігає всі значення і генерує помилку, якщо вказано заборонене значення.
- Поки dataSource дозволяє лише локальні обʼєкти, dataSourceRef дозволяє обʼєкти в будь-яких просторах імен.
(Бета) Використання цього поля вимагає ввімкненої властивості AnyVolumeDataSource. (Альфа) Використання поля namespace у dataSourceRef вимагає ввімкненої властивості CrossNamespaceVolumeDataSource.
dataSourceRef.kind (string), обовʼязково
Kind — це тип ресурсу, на який вказується
dataSourceRef.name (string), обовʼязково
Name — це назва ресурсу, на який вказується
dataSourceRef.apiGroup (string)
APIGroup — це група для ресурсу, на який вказується. Якщо APIGroup не вказано, вказаний Kind повинен бути в базовій групі API. Для будь-яких інших сторонніх типів APIGroup обовʼязковий.
dataSourceRef.namespace (string)
Namespace — це простір імен ресурсу, на який вказується. Зверніть увагу, що при вказанні простору імен для призначення 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/. (Beta) Використання цього поля вимагає ввімкнення функціональної можливостіVolumeAttributesClass
(стандартно вимкнено).
PersistentVolumeClaimStatus
PersistentVolumeClaimStatus — це поточний статус запиту на постійний том.
accessModes ([]string)
Atomic: буде замінено під час злиття
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.
Це поле альфа-версії та вимагає ввімкнення властивості 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.
Це поле альфа-версії та вимагає ввімкнення властивості RecoverVolumeExpansionFailure.
- Ключі без префіксу:
capacity (map[string]Quantity)
capacity представляє фактичні ресурси базового тому.
conditions ([]PersistentVolumeClaimCondition)
Patch strategy: злиття за ключем
type
conditions — це поточний стан запиту на постійний том. Якщо базовий постійний том змінюється в розмірі, стан буде встановлено на '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", це означає, що базовий постійний том змінюється в розмірі.
currentVolumeAttributesClassName (string)
currentVolumeAttributesClassName
— це поточна назва VolumeAttributesClass, яку використовує PVC. Якщо не встановлено, то до цього PersistentVolumeClaim не застосовано жодного VolumeAttributeClass. Це бета-поле і вимагає ввімкнення функції VolumeAttributesClass (стандартно вимкнена).modifyVolumeStatus (ModifyVolumeStatus)
ModifyVolumeStatus
представляє обʼєкт статусу операції ControllerModifyVolume. Якщо не встановлено, спроба виконання операції ModifyVolume не відбувається. Це бета-поле і вимагає ввімкнення функції VolumeAttributesClass (стандартно вимкнена).ModifyVolumeStatus представляє обʼєкт стану операції ControllerModifyVolume.
modifyVolumeStatus.status (string), required
status
— це статус операції ControllerModifyVolume. Він може перебувати в одному з наступних станів:- Pending
- Pending вказує на те, що PersistentVolumeClaim не може бути змінений через невиконані вимоги, такі як відсутність вказаного VolumeAttributesClass.
- InProgress
- InProgress вказує на те, що том наразі модифікується.
- Infeasible
- Infeasible вказує на те, що запит було відхилено як недійсний драйвером CSI. Щоб усунути помилку, потрібно вказати дійсний VolumeAttributesClass.
Примітка: Нові статуси можуть бути додані в майбутньому. Споживачі повинні перевіряти наявність невідомих статусів і відповідно обробляти помилки.
modifyVolumeStatus.targetVolumeAttributesClassName (string)
targetVolumeAttributesClassName — імʼя класу VolumeAttributesClass, який зараз узгоджується з PVC
phase (string)
phase представляє поточну фазу запиту на постійний том.
PersistentVolumeClaimList
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 — це список запитів на постійні томи. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
Операції
get
отримати вказаний PersistentVolumeClaim
HTTP-запит
GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
Параметри
name (в шляху): string, обовʼязковий
імʼя PersistentVolumeClaim
namespace (в шляху): string, обовʼязковий
pretty (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
401: Unauthorized
get
отримати статус вказаного PersistentVolumeClaim
HTTP-запит
GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status
Параметри
name (в шляху): string, обовʼязковий
імʼя PersistentVolumeClaim
namespace (в шляху): string, обовʼязковий
pretty (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
401: Unauthorized
list
перелік або спостереження за обʼєктами типу PersistentVolumeClaim
HTTP-запит
GET /api/v1/namespaces/{namespace}/persistentvolumeclaims
Параметри
namespace (в шляху): string, обовʼязковий
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PersistentVolumeClaimList): OK
401: Unauthorized
list
перелік або спостереження за обʼєктами типу PersistentVolumeClaim
HTTP-запит
GET /api/v1/persistentvolumeclaims
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PersistentVolumeClaimList): OK
401: Unauthorized
create
створити PersistentVolumeClaim
HTTP-запит
POST /api/v1/namespaces/{namespace}/persistentvolumeclaims
Параметри
namespace (в шляху): string, обовʼязковий
body: PersistentVolumeClaim, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
202 (PersistentVolumeClaim): Accepted
401: Unauthorized
update
замінити вказаний PersistentVolumeClaim
HTTP-запит
PUT /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
Параметри
name (в шляху): string, обовʼязковий
імʼя PersistentVolumeClaim
namespace (в шляху): string, обовʼязковий
body: PersistentVolumeClaim, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
update
замінити статус вказаного PersistentVolumeClaim
HTTP-запит
PUT /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status
Параметри
name (в шляху): string, обовʼязковий
імʼя PersistentVolumeClaim
namespace (в шляху): string, обовʼязковий
body: PersistentVolumeClaim, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
patch
частково оновити вказаний PersistentVolumeClaim
HTTP-запит
PATCH /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
Параметри
name (в шляху): string, обовʼязковий
імʼя PersistentVolumeClaim
namespace (в шляху): string, обовʼязковий
body: Patch, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
patch
частково оновити статус вказаного PersistentVolumeClaim
HTTP-запит
PATCH /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status
Параметри
name (в шляху): string, обовʼязковий
імʼя PersistentVolumeClaim
namespace (в шляху): string, обовʼязковий
body: Patch, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
delete
видалити PersistentVolumeClaim
HTTP-запит
DELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
Параметри
name (в шляху): string, обовʼязковий
імʼя PersistentVolumeClaim
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (PersistentVolumeClaim): OK
202 (PersistentVolumeClaim): Accepted
401: Unauthorized
deletecollection
видалити колекцію PersistentVolumeClaim
HTTP-запит
DELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims
Параметри
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized