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