×
描述

CSIDriver 捕获关于部署在集群上的容器存储接口 (CSI) 卷驱动程序的信息。Kubernetes 附加分离控制器使用此对象来确定是否需要附加。Kubelet 使用此对象来确定是否需要在挂载时传递 Pod 信息。CSIDriver 对象是非命名空间的。

类型

对象

必需
  • spec

规格

属性 类型 描述

apiVersion

字符串

APIVersion 定义此对象表示的版本化模式。服务器应将识别的模式转换为最新的内部值,并可能拒绝无法识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

Kind 是一个字符串值,表示此对象表示的 REST 资源。服务器可以从此客户端提交请求的端点推断出这一点。不能更新。使用驼峰命名法。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

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 是 CSIDriver 的规范。

.spec

描述

CSIDriverSpec 是 CSIDriver 的规范。

类型

对象

属性 类型 描述

attachRequired

布尔值

attachRequired 指示此 CSI 卷驱动程序需要附加操作(因为它实现了 CSI ControllerPublishVolume() 方法),并且 Kubernetes 附加分离控制器应调用附加卷接口,该接口检查 volumeattachment 状态并在卷附加之前等待,然后才能继续挂载。CSI 外部附加器与 CSI 卷驱动程序协调并在附加操作完成后更新 volumeattachment 状态。如果启用了 CSIDriverRegistry 功能网关并将值指定为 false,则将跳过附加操作。否则将调用附加操作。

此字段是不可变的。

fsGroupPolicy

字符串

fsGroupPolicy 定义底层卷是否支持在挂载之前更改卷的所有权和权限。有关更多详细信息,请参阅具体的 FSGroupPolicy 值。

此字段在 Kubernetes < 1.29 中是不可变的,现在是可变的。

默认为 ReadWriteOnceWithFSType,它将检查每个卷以确定 Kubernetes 是否应修改卷的所有权和权限。使用默认策略,只有在定义了 fstype 并且卷的访问模式包含 ReadWriteOnce 时,才会应用已定义的 fsGroup。

podInfoOnMount

布尔值

podInfoOnMount 指示此 CSI 卷驱动程序在挂载操作期间是否需要其他 Pod 信息(如 podName、podUID 等),如果设置为 true。如果设置为 false,则不会在挂载时传递 Pod 信息。默认为 false。

CSI 驱动程序将 podInfoOnMount 指定为驱动程序部署的一部分。如果为 true,Kubelet 将在 CSI NodePublishVolume() 调用中将 Pod 信息作为 VolumeContext 传递。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": 如果卷是由 CSIVolumeSource 定义的临时内联卷,则为“true”,否则为“false”

"csi.storage.k8s.io/ephemeral" 是 Kubernetes 1.16 中的新功能。它仅适用于同时支持“持久”和“临时”VolumeLifecycleMode 的驱动程序。其他驱动程序可以保持 Pod 信息禁用和/或忽略此字段。由于 Kubernetes 1.15 不支持此字段,因此驱动程序在部署到此类集群时只能支持一种模式,例如通过驱动程序的命令行参数来确定该模式。

此字段在 Kubernetes < 1.29 中是不可变的,现在是可变的。

requiresRepublish

布尔值

requiresRepublish 指示 CSI 驱动程序需要定期调用NodePublishVolume 来反映已挂载卷的任何可能更改。此字段默认为 false。

注意:在成功调用 NodePublishVolume 后,后续调用 NodePublishVolume 仅应更新卷的内容。运行中的容器将不会看到新的挂载点。

seLinuxMount

布尔值

seLinuxMount 指定 CSI 驱动程序是否支持“-o context”挂载选项。

如果为“true”,则 CSI 驱动程序必须确保此 CSI 驱动程序提供的所有卷都可以使用不同的-o context选项单独挂载。这对于将卷作为块设备上的文件系统或作为独立共享卷提供的存储后端来说是典型的。当挂载在显式设置 SELinux 上下文的 Pod 中使用的 ReadWriteOncePod 卷时,Kubernetes 将使用“-o context=xyz”挂载选项调用 NodeStage/NodePublish。将来,它可能会扩展到其他卷 AccessModes。无论如何,Kubernetes 将确保卷只使用单个 SELinux 上下文挂载。

如果为“false”,Kubernetes 不会将任何特殊的 SELinux 挂载选项传递给驱动程序。这对于表示更大共享文件系统子目录的卷来说是典型的。

默认为“false”。

storageCapacity

布尔值

storageCapacity 指示 CSI 卷驱动程序是否希望 Pod 调度考虑驱动程序部署将通过创建具有容量信息的 CSIStorageCapacity 对象来报告的存储容量(如果设置为 true)。

在部署驱动程序时可以立即启用此检查。在这种情况下,具有延迟绑定的新卷的配置将暂停,直到驱动程序部署发布一些合适的 CSIStorageCapacity 对象。

或者,可以在未设置或为 false 的情况下部署驱动程序,并在发布存储容量信息后稍后将其切换。

此字段在 Kubernetes ⇐ 1.22 中是不可变的,现在是可变的。

tokenRequests

数组

tokenRequests 指示 CSI 驱动程序需要为其挂载卷的 Pod 服务帐户令牌来执行必要的身份验证。Kubelet 将在 CSI NodePublishVolume 调用中的 VolumeContext 中传递令牌。CSI 驱动程序应解析并验证以下 VolumeContext:“csi.storage.k8s.io/serviceAccount.tokens”:{“<受众>”:{“token”:<令牌>,“expirationTimestamp”:,},…}

注意:每个 TokenRequest 中的受众应该不同,最多只有一个令牌为空字符串。要在令牌过期后接收新令牌,可以使用 RequiresRepublish 定期触发 NodePublishVolume。

tokenRequests[]

对象

TokenRequest 包含服务帐户令牌的参数。

volumeLifecycleModes

数组(字符串)

volumeLifecycleModes 定义此 CSI 卷驱动程序支持哪种类型的卷。如果列表为空,则默认为“Persistent”,这是 CSI 规范中定义的用法,并在 Kubernetes 中通过常用的 PV/PVC 机制实现。

另一种模式是“Ephemeral”。在此模式下,卷在 Pod 规范中使用 CSIVolumeSource 内联定义,其生命周期与该 Pod 的生命周期绑定。驱动程序必须意识到这一点,因为它只会对这样的卷获得 NodePublishVolume 调用。

有关实现此模式的更多信息,请参见 https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html 驱动程序可以支持一种或多种模式,将来可能会添加更多模式。

此字段为 Beta 版本。此字段是不可变的。

.spec.tokenRequests

描述

tokenRequests 指示 CSI 驱动程序需要为其挂载卷的 Pod 服务帐户令牌来执行必要的身份验证。Kubelet 将在 CSI NodePublishVolume 调用中的 VolumeContext 中传递令牌。CSI 驱动程序应解析并验证以下 VolumeContext:“csi.storage.k8s.io/serviceAccount.tokens”:{“<受众>”:{“token”:<令牌>,“expirationTimestamp”:,},…}

注意:每个 TokenRequest 中的受众应该不同,最多只有一个令牌为空字符串。要在令牌过期后接收新令牌,可以使用 RequiresRepublish 定期触发 NodePublishVolume。

类型

数组

.spec.tokenRequests[]

描述

TokenRequest 包含服务帐户令牌的参数。

类型

对象

必需
  • audience

属性 类型 描述

audience

字符串

audience 是“TokenRequestSpec”中令牌的目标受众。它将默认为 kube apiserver 的受众。

expirationSeconds

整数

expirationSeconds 是“TokenRequestSpec”中令牌的有效期。它与“TokenRequestSpec”中“ExpirationSeconds”的默认值相同。

API 端点

提供以下 API 端点

  • /apis/storage.k8s.io/v1/csidrivers

    • DELETE:删除 CSIDriver 集合

    • GET:列出或监视 CSIDriver 类型对象

    • POST:创建一个 CSIDriver

  • /apis/storage.k8s.io/v1/watch/csidrivers

    • GET:监视对 CSIDriver 列表的单个更改。已弃用:改为使用列表操作的“watch”参数。

  • /apis/storage.k8s.io/v1/csidrivers/{name}

    • DELETE:删除一个 CSIDriver

    • GET:读取指定的 CSIDriver

    • PATCH:部分更新指定的 CSIDriver

    • PUT:替换指定的 CSIDriver

  • /apis/storage.k8s.io/v1/watch/csidrivers/{name}

    • GET:监视对 CSIDriver 类型对象的更改。已弃用:改为使用列表操作的“watch”参数,并使用“fieldSelector”参数过滤为单个项目。

/apis/storage.k8s.io/v1/csidrivers

HTTP 方法

DELETE

描述

删除 CSIDriver 集合

表 1. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

表 2. HTTP 响应
HTTP 代码 响应正文

200 - OK

Status 模式

401 - Unauthorized

HTTP 方法

GET

描述

列出或监视 CSIDriver 类型对象

表 3. HTTP 响应
HTTP 代码 响应正文

200 - OK

CSIDriverList 模式

401 - Unauthorized

HTTP 方法

POST

描述

创建一个 CSIDriver

表 4. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为每个从对象中删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍然会成功,并且只会保留任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果任何未知字段将从对象中删除,或者如果存在任何重复字段,这将使请求失败并出现 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 5. 正文参数
参数 类型 描述

正文

CSIDriver 模式

表 6. HTTP 响应
HTTP 代码 响应正文

200 - OK

CSIDriver 模式

201 - Created

CSIDriver 模式

202 - Accepted

CSIDriver 模式

401 - Unauthorized

/apis/storage.k8s.io/v1/watch/csidrivers

HTTP 方法

GET

描述

监视对 CSIDriver 列表的单个更改。已弃用:改为使用列表操作的“watch”参数。

表 7. HTTP 响应
HTTP 代码 响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized

/apis/storage.k8s.io/v1/csidrivers/{name}

表 8. 全局路径参数
参数 类型 描述

name

字符串

CSIDriver 的名称

HTTP 方法

DELETE

描述

删除一个 CSIDriver

表 9. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

表 10. HTTP 响应
HTTP 代码 响应正文

200 - OK

CSIDriver 模式

202 - Accepted

CSIDriver 模式

401 - Unauthorized

HTTP 方法

GET

描述

读取指定的 CSIDriver

表 11. HTTP 响应
HTTP 代码 响应正文

200 - OK

CSIDriver 模式

401 - Unauthorized

HTTP 方法

PATCH

描述

部分更新指定的 CSIDriver

表 12. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为每个从对象中删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍然会成功,并且只会保留任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果任何未知字段将从对象中删除,或者如果存在任何重复字段,这将使请求失败并出现 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 13. HTTP 响应
HTTP 代码 响应正文

200 - OK

CSIDriver 模式

201 - Created

CSIDriver 模式

401 - Unauthorized

HTTP 方法

PUT

描述

替换指定的 CSIDriver

表 14. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为每个从对象中删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍然会成功,并且只会保留任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果任何未知字段将从对象中删除,或者如果存在任何重复字段,这将使请求失败并出现 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 15. 正文参数
参数 类型 描述

正文

CSIDriver 模式

表 16. HTTP 响应
HTTP 代码 响应正文

200 - OK

CSIDriver 模式

201 - Created

CSIDriver 模式

401 - Unauthorized

/apis/storage.k8s.io/v1/watch/csidrivers/{name}

表 17. 全局路径参数
参数 类型 描述

name

字符串

CSIDriver 的名称

HTTP 方法

GET

描述

观察 CSIDriver 对象的更改。已弃用:请改用带有列表操作的“watch”参数,并使用“fieldSelector”参数将其过滤为单个项目。

表 18. HTTP 响应
HTTP 代码 响应正文

200 - OK

WatchEvent 模式

401 - Unauthorized