CSIDriver
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIDriver
CSIDriver собирает информацию о драйвере объёма интерфейса хранения контейнеров (CSI), развернутом в кластере. Контроллер Kubernetes attach detach использует этот объект для определения, требуется ли подключение. Kubelet использует этот объект для определения, нужно ли передавать информацию о под на этапе монтирования. Объекты 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 объёма требуется операция подключения (потому что он реализует метод CSI ControllerPublishVolume()), и что контроллер Kubernetes attach detach должен вызывать интерфейс подключения к объёму, который проверяет состояние volumeattachment и ожидает, пока объём не будет подключён, прежде чем продолжить монтирование. CSI external-attacher координирует работу с драйвером объёма CSI и обновляет состояние volumeattachment, когда операция подключения завершается. Если включена функция CSIDriverRegistry и значение установлено в false, операция подключения будет пропущена. В противном случае операция подключения будет вызвана.
Это поле неизменяемо.
-
fsGroupPolicy (строка)
Определяет, поддерживает ли базовый объём изменение владения и разрешений объёма перед монтированием. Для получения дополнительной информации см. конкретные значения FSGroupPolicy.
Это поле неизменяемо.
По умолчанию используется ReadWriteOnceWithFSType, который будет проверять каждый объём, чтобы определить, должен ли Kubernetes изменять владение и разрешения объёма. При использовании политики по умолчанию определённая группа fsGroup будет применена только в том случае, если указан тип fstype, и режим доступа объёма содержит ReadWriteOnce.
-
podInfoOnMount (boolean)
Если установлено в true, podInfoOnMount указывает, что этому драйверу CSI объёма требуется дополнительная информация о под (например, podName, podUID и т. д.) во время операций монтирования. Если установлено в false, информация о под не будет передана на этапе монтирования. По умолчанию значение false. Драйвер CSI указывает подInfoOnMount в составе развертывания драйвера. Если true, Kubelet передаст информацию о под как VolumeContext в вызовах CSI NodePublishVolume(). Драйвер CSI отвечает за анализ и проверку информации, переданной в виде VolumeContext. Если подInfoOnMount установлено в true, будет передана следующая VolumeContext. Этот список может расширяться, но будет использоваться префикс. "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». Другие драйверы могут оставить информацию о под отключённой и/или игнорировать это поле. Поскольку 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, используемый в под, в котором явно установлен контекст SELinux. В будущем это может быть расширено на другие режимы доступа объёма. В любом случае Kubernetes гарантирует, что объём будет смонтирован только с одним контекстом SELinux.Когда «false», Kubernetes не будет передавать никаких специальных опций монтирования SELinux драйверу. Это характерно для объёмов, представляющих подкаталоги более крупной общей файловой системы.
По умолчанию «false».
-
storageCapacity (boolean)
Если установлено в true, storageCapacity указывает, что драйвер CSI объёма хочет, чтобы планирование под учитывало объём хранилища, который драйвер развертывания сообщит, создав объекты CSIStorageCapacity с информацией о ёмкости.
Проверку можно включить сразу при развертывании драйвера. В этом случае создание новых объёмов с отложенной привязкой приостановится, пока драйвер развертывания не опубликует подходящий объект CSIStorageCapacity.
В качестве альтернативы драйвер можно развернуть с неопределённым или ложным полем и позже его переключить, когда информация о ёмкости хранилища была опубликована.
Это поле было неизменяемым в Kubernetes <= 1.22, а теперь является изменяемым.
-
tokenRequests ([]TokenRequest)
Атомарно: будет заменено при слиянии
TokenRequests указывает, что драйвер CSI нуждается в токенах учётной записи службы под, для которой он монтирует объём, чтобы выполнить необходимую аутентификацию. Kubelet передаст токены в VolumeContext в вызовах CSI NodePublishVolume. Драйвер CSI должен проанализировать и проверить следующий VolumeContext: «csi.storage.k8s.io/serviceAccount.tokens»: { «<аудитория>»: { «токен»: «<токен>», «expirationTimestamp»: «<временная метка истечения срока действия в формате RFC3339>», }, … }
Примечание: Аудитория в каждом TokenRequest должна быть различной, и не более одного токена может быть пустой строкой. Чтобы получить новый токен после истечения срока действия, можно использовать RequiresRepublish для периодического запуска NodePublishVolume.
TokenRequest содержит параметры токена учётной записи службы.
-
tokenRequests.audience (строка), требуется
Аудитория — это целевая аудитория токена в «TokenRequestSpec». Она по умолчанию соответствует аудиториям kube apiserver.
-
tokenRequests.expirationSeconds (int64)
ExpirationSeconds — это срок действия токена в «TokenRequestSpec». Он имеет такое же значение по умолчанию, что и «ExpirationSeconds» в «TokenRequestSpec».
-
-
volumeLifecycleModes ([]строка)
Установлено: уникальные значения будут сохранены при слиянии
volumeLifecycleModes определяет, какие типы объёмов поддерживает этот драйвер CSI объёма. По умолчанию, если список пуст, используется «Persistent», что соответствует использованию, определённому спецификацией CSI и реализованному в Kubernetes с помощью обычного механизма PV/PVC. Другой режим — «Ephemeral». В этом режиме объёмы определяются в спецификации под с помощью CSIVolumeSource, и их жизненный цикл привязан к жизненному циклу этой под. Драйверу необходимо учитывать это, так как он получит только вызов 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-25.docs.kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/csi-driver-v1/