CSIDriver
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIDriver
CSIDriver содержит сведения о драйвере томов Container Storage Interface (CSI), развернутом в кластере. Контроллер подключения и отключения Kubernetes использует этот объект, чтобы определить, требуется ли подключение. Kubelet использует этот объект, чтобы определить, нужно ли передавать сведения о поде при монтировании. Объекты CSIDriver не относятся к пространствам имен.
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлено. В CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataObjectMeta |
Стандартные метаданные объекта. 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.
| Поле | Описание |
|---|---|
attachRequiredboolean |
attachRequired указывает, что этому драйверу томов CSI требуется операция подключения (поскольку он реализует метод CSI ControllerPublishVolume()), и что контроллер подключения и отключения Kubernetes должен вызвать интерфейс подключения тома, который проверяет состояние volumeattachment и ожидает подключения тома перед продолжением монтирования. Внешний компонент CSI external-attacher взаимодействует с драйвером томов CSI и обновляет состояние volumeattachment после завершения операции подключения. Если для этого поля указано значение false, операция подключения будет пропущена. В противном случае операция подключения будет вызвана. Это поле неизменяемо. |
fsGroupPolicystring |
fsGroupPolicy определяет, поддерживает ли базовый том изменение владельца и разрешений тома перед его монтированием. Дополнительные сведения см. в описаниях конкретных значений FSGroupPolicy. В Kubernetes < 1.29 это поле было неизменяемым, теперь оно может изменяться. По умолчанию используется ReadWriteOnceWithFSType: для каждого тома проверяется, следует ли Kubernetes изменять его владельца и разрешения. При использовании политики по умолчанию заданный fsGroup применяется только в том случае, если определен fstype, а режим доступа тома содержит ReadWriteOnce. |
nodeAllocatableUpdatePeriodSecondsinteger |
nodeAllocatableUpdatePeriodSeconds задает интервал между периодическими обновлениями доступной для выделения емкости CSINode для этого драйвера. Если это поле задано, включаются как периодические обновления, так и обновления, запускаемые ошибками, связанными с емкостью. Если поле не задано, обновления не выполняются (ни периодически, ни при обнаружении ошибок, связанных с емкостью), а значение allocatable.count остается неизменным. Минимально допустимое значение этого поля — 10 секунд. Для этой функции необходимо включить функциональный переключатель MutableCSINodeAllocatableCount. Это поле может изменяться. |
podInfoOnMountboolean |
podInfoOnMount указывает, что этому драйверу томов CSI при операциях монтирования требуются дополнительные сведения о поде (например, podName, podUID и т. д.), если задано значение true. Если задано значение false, сведения о поде при монтировании передаваться не будут. Значение по умолчанию — false. Драйвер CSI задает podInfoOnMount при развертывании драйвера. Если задано значение true, Kubelet передает сведения о поде в качестве VolumeContext при вызовах CSI NodePublishVolume(). Драйвер CSI отвечает за анализ и проверку сведений, переданных в VolumeContext. Если для podInfoOnMount задано значение 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 не поддерживает это поле, при развертывании в таком кластере драйверы могут поддерживать только один режим, определяемый развертыванием, например параметром командной строки драйвера. В Kubernetes < 1.29 это поле было неизменяемым, теперь оно может изменяться. |
preventPodSchedulingIfMissingboolean |
PreventPodSchedulingIfMissing указывает, что драйвер CSI хочет запретить планирование подов, если на узле отсутствует драйвер CSI. Включение этого параметра не позволит планировщику (или любому другому компоненту, встраивающему планировщик по умолчанию, например cluster-autoscaler) планировать поды на узлах, где драйвер CSI не установлен. Компоненты (например, cluster-autoscaler), встраивающие планировщик и выполняющие моделирование размещения подов с помощью плагинов планировщика, ДОЛЖНЫ учитывать сведения о регистрации драйверов CSI из объекта CSINode. Во время моделирования планирования они должны создавать смоделированные объекты CSINode наряду с объектами Node; в противном случае, если для объекта CSIDriver глобально включен PreventPodSchedulingIfMissing, планировщик может отклонить любой вновь созданный узел из-за отсутствия на нем сведений о драйвере CSI. Эта функция имеет статус alpha и требует включения функционального переключателя VolumeLimitScaling. Значение по умолчанию — "false". |
requiresRepublishboolean |
requiresRepublish указывает, что драйвер CSI хочет, чтобы `NodePublishVolume` периодически вызывался для отражения возможных изменений в смонтированном томе. По умолчанию для этого поля задано значение false. Примечание: после успешного первоначального вызова NodePublishVolume последующие вызовы NodePublishVolume должны только обновлять содержимое тома. Новые точки монтирования не будут видны уже работающему контейнеру. |
seLinuxMountboolean |
seLinuxMount указывает, поддерживает ли драйвер CSI параметр монтирования "-o context". Если задано значение "true", драйвер CSI должен гарантировать, что все предоставляемые им тома можно монтировать по отдельности с разными параметрами `-o context`. Это типично для серверных систем хранения, предоставляющих тома в виде файловых систем на блочных устройствах или независимых общих томов. При монтировании тома ReadWriteOncePod, используемого в поде с явно заданным контекстом SELinux, Kubernetes вызовет NodeStage / NodePublish с параметром монтирования "-o context=xyz". В будущем поддержка может быть расширена на другие режимы AccessModes томов. В любом случае Kubernetes гарантирует, что том будет смонтирован только с одним контекстом SELinux. Если задано значение "false", Kubernetes не будет передавать драйверу специальные параметры монтирования SELinux. Это типично для томов, представляющих подкаталоги более крупной общей файловой системы. Значение по умолчанию — "false". |
serviceAccountTokenInSecretsboolean |
serviceAccountTokenInSecrets — это параметр, который драйвер CSI может включить, чтобы токены учетной записи службы передавались в поле Secrets запроса NodePublishVolumeRequest, а не в поле VolumeContext. Спецификация CSI предоставляет специальное поле Secrets для конфиденциальных данных, таких как токены; это подходящий механизм для работы с учетными данными. Это позволяет решить проблему безопасности, связанную с тем, что конфиденциальные токены записывались в журналы как часть контекста тома. Если задано значение "true", kubelet будет передавать токены только в поле Secrets с ключом "csi.storage.k8s.io/serviceAccount.tokens". Драйвер CSI необходимо обновить, чтобы он считывал токены из поля Secrets, а не из VolumeContext. Если задано значение "false" или поле не задано, kubelet будет передавать токены в VolumeContext с ключом "csi.storage.k8s.io/serviceAccount.tokens" (существующее поведение). Это обеспечивает обратную совместимость с существующими драйверами CSI. Это поле можно задать только при настроенном TokenRequests. API-сервер отклонит спецификации CSIDriver, в которых это поле задано без TokenRequests. Если поле не задано, токены по умолчанию передаются в поле VolumeContext. |
storageCapacityboolean |
storageCapacity указывает, что драйвер томов CSI хочет, чтобы при планировании подов учитывалась емкость хранилища, о которой развертывание драйвера будет сообщать, создавая объекты CSIStorageCapacity с данными о емкости, если задано значение true. Проверку можно включить сразу при развертывании драйвера. В этом случае подготовка новых томов с отложенной привязкой будет приостановлена, пока развертывание драйвера не опубликует подходящий объект CSIStorageCapacity. Также драйвер можно развернуть, не задавая это поле или указав false, а позднее изменить его значение после публикации сведений о емкости хранилища. В Kubernetes <= 1.22 это поле было неизменяемым, теперь оно может изменяться. |
tokenRequestsTokenRequest array |
tokenRequests указывает, что драйверу CSI нужны токены учетных записей служб подов, для которых он монтирует тома, чтобы выполнить необходимую аутентификацию. Kubelet передаст токены в VolumeContext при вызовах CSI NodePublishVolume. Драйвер CSI должен анализировать и проверять следующие данные VolumeContext: "csi.storage.k8s.io/serviceAccount.tokens": { "\<audience>": { "token": \<token>, "expirationTimestamp": \<expiration in="" rfc3339="" timestamp="">, }, ... } Примечание: Audience в каждом TokenRequest должно отличаться, и не более чем один токен может быть пустой строкой. Чтобы получить новый токен после истечения срока действия, можно использовать RequiresRepublish для периодического вызова NodePublishVolume. |
volumeLifecycleModesstring array |
volumeLifecycleModes определяет, какие типы томов поддерживает этот драйвер томов CSI. Если список пуст, по умолчанию используется "Persistent" — режим использования, определенный спецификацией CSI и реализованный в Kubernetes с помощью обычного механизма PV/PVC. Другой режим — "Ephemeral". В этом режиме тома задаются непосредственно в спецификации пода с помощью CSIVolumeSource, а их жизненный цикл связан с жизненным циклом этого пода. Драйвер должен учитывать это, поскольку для такого тома он получит только вызов NodePublishVolume. Дополнительные сведения о реализации этого режима см. на странице https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html. Драйвер может поддерживать один или несколько таких режимов; в будущем могут появиться дополнительные режимы. Это поле имеет статус beta. Это поле неизменяемо. |
CSIDriverList
CSIDriverList — это набор объектов CSIDriver.
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
items *CSIDriver array |
items — список CSIDriver |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлено. В CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataListMeta |
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata |
TokenRequest
TokenRequest содержит параметры токена учетной записи службы.
| Поле | Описание |
|---|---|
audience *string |
audience — целевая аудитория токена в "TokenRequestSpec". По умолчанию используются аудитории kube apiserver. |
expirationSecondsinteger |
expirationSeconds — срок действия токена в "TokenRequestSpec". По умолчанию используется то же значение, что и для "ExpirationSeconds" в "TokenRequestSpec". |
© 2026 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2026 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/storage/csi-driver-v1/