第 2 章 CSIDriver [storage.k8s.io/v1]


描述
CSIDriver 捕获集群中部署的 Container Storage Interface (CSI)卷驱动程序的信息。Kubernetes attach detach controller 使用这个对象来决定是否需要附加。kubelet 使用此对象来确定是否需要在挂载中传递 pod 信息。CSIDriver 对象没有命名空间。
类型
object
必填
  • spec

2.1. 规格

属性类型描述

apiVersion

字符串

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

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象 metadata. metadata.Name 表示此对象引用的 CSI 驱动程序的名称 ; 必须为该驱动程序返回的 CSI GetPluginName ()调用名称相同。驱动程序名称必须是 63 个字符或更少,以字母数字字符([a-z0-9A-Z])开头和结尾,并带有短划线(-)、句点(.)和字母数字。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

CSIDriverSpec 是 CSIDriver 的规格。

2.1.1. .spec

描述
CSIDriverSpec 是 CSIDriver 的规格。
类型
object
属性类型描述

attachRequired

布尔值

attachRequired 表示这个 CSI 卷驱动程序需要一个 attach 操作(因为它实现了 CSI ControllerPublishVolume ()方法),并且 Kubernetes attach detach 控制器应该调用 attach 卷接口来检查 volumeattachment 状态并等待卷附加等待,直到卷被附加。CSI external-attacher 与 CSI 卷驱动程序协调,并在 attach 操作完成后更新 volumeattachment 状态。如果启用了 CSIDriverRegistry 功能门,并将值指定为 false,则会跳过 attach 操作。否则,将调用 attach 操作。

此字段不可变。

fsGroupPolicy

string

fsGroupPolicy 定义底层卷是否支持在挂载前更改卷的所有权和权限。如需了解更多详细信息,请参阅特定的 FSGroupPolicy 值。

此字段不可变。

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

podInfoOnMount

布尔值

podInfoOnMount 表示这个 CSI 卷驱动程序在挂载操作过程中需要额外的 pod 信息(如 podName、podUID 等)。如果设置为 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": "true" (如果卷是一个内联卷),否则为 "pod.UID ": "csi.storage.k8s.io/ephemeral": "true"

"CSI.storage.k8s.io/ephemeral"是 Kubernetes 1.16 中的一项新功能。只有支持"Persistent"和"Ephemeral" VolumeLifecycleMode 的驱动程序才需要它。其他驱动程序可以禁用 pod 信息和/或忽略此字段。因为 Kubernetes 1.15 不支持此字段,所以当这样的集群中部署时,驱动程序只能支持一个模式,部署会决定哪个模式,例如通过驱动程序的命令行参数。

此字段不可变。

requiresRepublish

布尔值

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

注: 在成功调用 NodePublishVolume 后,对 NodePublishVolume 的后续调用应该只更新卷的内容。正在运行的容器不会看到新的挂载点。

seLinuxMount

布尔值

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

当 "true" 时,CSI 驱动程序必须确保使用这个 CSI 驱动程序提供的所有卷都可以使用不同的 上下文 选项单独挂载。这通常适用于将卷作为文件系统在块设备或独立共享卷中提供的存储后端。当挂载一个明确设置了 SELinux 上下文的 ReadWriteOncePod 卷时,Kubernetes 将调用 NodeStage / NodePublish with "-o context=xyz" 挂载选项。以后可能会扩展到其他 volume AccessModes。在任何情况下,Kubernetes 将确保仅用单个 SELinux 上下文挂载该卷。

当 "false" 时,Kubernetes 不会将任何特殊的 SELinux 挂载选项传递给驱动程序。这通常用于代表更大共享文件系统的子目录的卷。

默认为 "false"。

storageCapacity

布尔值

StorageCapacity 表示 CSI 卷驱动程序希望 pod 调度来考虑驱动程序部署通过创建具有容量信息的 CSIStorageCapacity 对象来报告(如果设为 true)。

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

或者,驱动程序可以使用字段 unset 或 false 进行部署,并稍后在发布存储容量信息时中断。

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

tokenRequests

数组

tokenRequests 表示 CSI 驱动程序需要 pod 的服务帐户令牌,它会挂载卷以进行必要的身份验证。kubelet 将传递 CSI NodePublishVolume 调用中的 VolumeContext 中的令牌。CSI 驱动程序应解析并验证以下 VolumeContext: "csi.storage.k8s.io/serviceAccount.tokens": { "<audience>": { "token": <token>, "expirationTimestamp": <expiration timestamp in RFC3339>, }, …​ }

注: 每个 TokenRequest 中的 Audience 应该不同,大多数令牌都是空字符串。要在到期后接收新令牌,RequiresRepublish 可用于定期触发 NodePublishVolume。

tokenRequests[]

object

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

volumeLifecycleModes

数组(字符串)

VolumeLifecycleModes 定义这个 CSI 卷驱动程序支持的卷类型。如果列表为空为 "Persistent",这是 CSI 规格定义的使用量,并通过常见的 PV/PVC 机制在 Kubernetes 中实施。

另一个模式是"Ephemeral"。在这个模式中,卷通过 CSIVolumeSource 在 pod 规格中内联定义,它们的生命周期与该 pod 的生命周期相关联。驱动程序必须了解这一点,因为它只会获得此类卷的 NodePublishVolume 调用。

有关实现这个模式的更多信息,请参阅 https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A 驱动程序可以支持一个或多个这些模式,以后可能会添加更多模式。

该字段为 beta。此字段不可变。

2.1.2. .spec.tokenRequests

描述

tokenRequests 表示 CSI 驱动程序需要 pod 的服务帐户令牌,它会挂载卷以进行必要的身份验证。kubelet 将传递 CSI NodePublishVolume 调用中的 VolumeContext 中的令牌。CSI 驱动程序应解析并验证以下 VolumeContext: "csi.storage.k8s.io/serviceAccount.tokens": { "<audience>": { "token": <token>, "expirationTimestamp": <expiration timestamp in RFC3339>, }, …​ }

注: 每个 TokenRequest 中的 Audience 应该不同,大多数令牌都是空字符串。要在到期后接收新令牌,RequiresRepublish 可用于定期触发 NodePublishVolume。

类型
数组

2.1.3. .spec.tokenRequests[]

描述
TokenRequest 包含服务帐户令牌的参数。
类型
object
必填
  • 受众
属性类型描述

受众

string

audience 是 "TokenRequestSpec" 中令牌的预期使用者。它将默认为 kube apiserver 的 audiences。

expirationSeconds

整数

expirationSeconds 是 "TokenRequestSpec" 中令牌的有效性持续时间。它在 "TokenRequestSpec" 中具有相同的默认值 "ExpirationSeconds"。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.