CSIDriver
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIDriver
CSIDriver собирает информацию о драйвере объёма интерфейса хранения контейнеров (CSI), развернутом в кластере. Контроллер Kubernetes attach detach использует этот объект для определения необходимости прикрепления. Kubelet использует этот объект для определения, требуется ли передавать информацию о pod при монтировании. Объекты CSIDriver не имеют пространства имён.
-
apiVersion: storage.k8s.io/v1
-
kind: CSIDriver
-
metadata (ObjectMeta)
Стандартные метаданные объекта. metadata.Name указывает имя драйвера CSI, на которое ссылается этот объект; оно ДОЛЖНО совпадать с именем, возвращённым вызовом CSI GetPluginName() для этого драйвера. Имя драйвера должно содержать 63 символа или меньше, начинаться и заканчиваться буквенно-цифровым символом ([a-z0-9A-Z]), содержать дефисы (-), точки (.) и буквенно-цифровые символы между ними. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
spec (CSIDriverSpec), обязательно
Спецификация драйвера CSI.
CSIDriverSpec
CSIDriverSpec — это спецификация CSIDriver.
-
attachRequired (boolean)
attachRequired указывает, что этому драйверу CSI требуется операция attach (поскольку он реализует метод CSI ControllerPublishVolume()), и что контроллер Kubernetes attach detach должен вызывать интерфейс attach volume, который проверяет состояние volumeattachment и ждёт, пока объём не будет подключён, прежде чем приступать к монтированию. CSI external-attacher координирует работу с драйвером CSI объёма и обновляет статус volumeattachment, когда операция attach завершена. Если шлюз CSIDriverRegistry включён и значение установлено в false, операция attach будет пропущена. В противном случае операция attach будет вызвана.
Это поле неизменяемо.
-
fsGroupPolicy (string)
Определяет, поддерживает ли базовый объём изменение владения и разрешений объёма перед его монтированием. Дополнительные сведения см. в значениях конкретного FSGroupPolicy.
Это поле неизменяемо.
По умолчанию используется ReadWriteOnceWithFSType, который будет проверять каждый объём, чтобы определить, должен ли Kubernetes изменять владение и разрешения объёма. При использовании политики по умолчанию определённая группа fs будет применена только в том случае, если тип fstype определён, а режим доступа объёма содержит ReadWriteOnce.
-
podInfoOnMount (boolean)
Если установлено в true, podInfoOnMount указывает, что этому драйверу CSI требуется дополнительная информация о pod (например, podName, podUID и т. д.) во время операций монтирования. Если установлено в false, информация о pod не будет передаваться при монтировании. По умолчанию значение false. Драйвер CSI указывает podInfoOnMount как часть развертывания драйвера. Если значение true, Kubelet передаст информацию о pod как VolumeContext в вызовы CSI NodePublishVolume(). Драйвер CSI отвечает за обработку и валидацию информации, переданной в VolumeContext. Следующий VolumeConext будет передан, если podInfoOnMount установлено в true. Этот список может увеличиваться, но префикс будет использоваться. «csi.storage.k8s.io/pod.name»: pod.Name «csi.storage.k8s.io/pod.namespace»: pod.Namespace «csi.storage.k8s.io/pod.uid»: string(pod.UID) «csi.storage.k8s.io/ephemeral»: «true», если объём является временным встроенным объёмом, определённым CSIVolumeSource, в противном случае «false»
«csi.storage.k8s.io/ephemeral» — новая функция в Kubernetes 1.16. Она требуется только для драйверов, которые поддерживают оба режима VolumeLifecycleMode «Persistent» и «Ephemeral». Другие драйверы могут отключить информацию о pod и/или игнорировать это поле. Поскольку Kubernetes 1.15 не поддерживает это поле, драйверы могут поддерживать только один режим при развертывании в таком кластере, и развертывание определяет этот режим, например, через параметр командной строки драйвера.
Это поле неизменяемо.
-
requiresRepublish (boolean)
RequiresRepublish указывает, что драйвер CSI хочет, чтобы
NodePublishVolumeвызывался периодически для отражения любых возможных изменений в смонтированном объёме. По умолчанию значение false.Примечание: после успешного вызова NodePublishVolume, последующие вызовы NodePublishVolume должны обновлять только содержимое объёма. Новые точки монтирования не будут видны работающему контейнеру.
-
seLinuxMount (boolean)
SELinuxMount указывает, поддерживает ли драйвер CSI опцию монтирования «-o context».
Когда значение «true», драйвер CSI должен гарантировать, что все объёмы, предоставляемые этим драйвером CSI, могут быть смонтированы отдельно с разными
-o contextопциями. Это типично для хранилищ, которые предоставляют объёмы как файловые системы на блочных устройствах или как независимые объёмы общего доступа. Kubernetes будет вызывать NodeStage/NodePublish с опцией монтирования «-o context=xyz», когда монтируется объём ReadWriteOncePod, используемый в Pod, в котором явно установлен контекст SELinux. В будущем это может быть расширено на другие режимы доступа к объёму. В любом случае Kubernetes будет гарантировать, что объём смонтирован только с одним контекстом SELinux.Когда значение «false», Kubernetes не будет передавать какие-либо специальные опции монтирования SELinux драйверу. Это типично для объёмов, представляющих подкаталоги большей общей файловой системы.
Значение по умолчанию — «false».
-
storageCapacity (boolean)
Если установлено в true, storageCapacity указывает, что драйвер CSI объёма хочет, чтобы планирование pod учитывало ёмкость хранилища, которую развертывание драйвера сообщит, создав объекты CSIStorageCapacity с информацией о ёмкости.
Проверку можно включить сразу при развертывании драйвера. В этом случае выделение новых объёмов с задержкой привязки будет приостановлено, пока развертывание драйвера не опубликует подходящий объект CSIStorageCapacity.
В качестве альтернативы драйвер можно развернуть с не заданным или false значением поля и переключить его позже, когда информация о ёмкости хранилища будет опубликована.
Это поле было неизменяемым в Kubernetes <= 1.22 и теперь является изменяемым.
-
tokenRequests ([]TokenRequest)
Атомарно: будет заменено при слиянии
TokenRequests указывает, что драйвер CSI нуждается в токенах учётных записей сервиса pod, для которых он монтирует объём, чтобы выполнить необходимую аутентификацию. Kubelet будет передавать токены в VolumeContext в вызовах CSI NodePublishVolume. Драйвер CSI должен обрабатывать и проверять следующий VolumeContext: «csi.storage.k8s.io/serviceAccount.tokens»: { «<адресат>»: { «токен»: «<токен>», «expirationTimestamp»: «<метка времени истечения срока действия в формате RFC3339>», }, ... }
Примечание: Адресат в каждом TokenRequest должен быть различным, и не более одного токена может быть пустой строкой. Чтобы получить новый токен после истечения срока действия, можно использовать RequiresRepublish для периодического запуска NodePublishVolume.
TokenRequest содержит параметры токена учётной записи сервиса.
-
tokenRequests.audience (string), обязательно
Адресат — это целевой адресат токена в «TokenRequestSpec». Он по умолчанию будет соответствовать адресатам kube apiserver.
-
tokenRequests.expirationSeconds (int64)
ExpirationSeconds — это продолжительность срока действия токена в «TokenRequestSpec». Он имеет то же значение по умолчанию, что и «ExpirationSeconds» в «TokenRequestSpec».
-
-
volumeLifecycleModes ([]string)
Установлено: уникальные значения будут сохранены при слиянии
volumeLifecycleModes определяет, какие типы объёмов поддерживает этот драйвер CSI объёма. По умолчанию, если список пуст, используется «Persistent», что соответствует использованию, определённому в спецификации CSI и реализованному в Kubernetes с помощью обычного механизма PV/PVC. Другой режим — «Ephemeral». В этом режиме объёмы определяются внутри спецификации pod с помощью CSIVolumeSource, и их жизненный цикл связан с жизненным циклом этого pod. Драйверу необходимо учитывать это, поскольку он получит только вызов NodePublishVolume для такого объёма. Более подробную информацию о реализации этого режима см. в https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html Драйвер может поддерживать один или несколько режимов, и в будущем могут быть добавлены другие режимы. Это поле — бета-версия.
Это поле неизменяемо.
CSIDriverList
CSIDriverList — это коллекция объектов CSIDriver.
-
apiVersion: storage.k8s.io/v1
-
kind: CSIDriverList
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]CSIDriver), обязательно
items — это список CSIDriver
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-26.docs.kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/csi-driver-v1/