CSIDriver
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIDriver
CSIDriver 捕获有关部署在集群上的容器存储接口 (CSI) 卷驱动程序的信息。 Kubernetes attach detach 控制器使用此对象来确定是否需要附加。 Kubelet 使用此对象来确定是否需要在挂载时传递 Pod 信息。 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 (布尔值)
attachRequired 指示此 CSI 卷驱动程序需要附加操作(因为它实现了 CSI ControllerPublishVolume() 方法),并且 Kubernetes attach detach 控制器应调用附加卷接口,该接口检查卷附加状态,并等待直到卷附加完成,然后继续进行挂载。CSI external-attacher 与 CSI 卷驱动程序协调,并在附加操作完成后更新卷附加状态。如果启用了 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 ([]TokenRequest)
原子操作:将在合并期间被替换
tokenRequests 指示 CSI 驱动程序需要它正在挂载卷的 Pod 的服务帐户令牌来执行必要的身份验证。 Kubelet 将在 CSI NodePublishVolume 调用中以 VolumeContext 传递令牌。 CSI 驱动程序应解析并验证以下 VolumeContext: “csi.storage.k8s.io/serviceAccount.tokens”: { “<audience>”: { “token”: <token>, “expirationTimestamp”: <RFC3339 中的到期时间戳>, }, ... }
注意:每个 TokenRequest 中的受众应不同,并且最多一个令牌为空字符串。 要在过期后接收新令牌,可以使用 RequiresRepublish 定期触发 NodePublishVolume。
tokenRequests.audience (字符串),必需
audience 是“TokenRequestSpec”中令牌的预期受众。 它将默认为 kube apiserver 的受众。
tokenRequests.expirationSeconds (int64)
expirationSeconds 是“TokenRequestSpec”中令牌的有效持续时间。 它与“TokenRequestSpec”中的“ExpirationSeconds”具有相同的默认值。
volumeLifecycleModes ([]字符串)
集合:合并期间将保留唯一值
volumeLifecycleModes 定义此 CSI 卷驱动程序支持哪种类型的卷。如果列表为空,则默认值为“Persistent”,这是 CSI 规范定义的用法,并在 Kubernetes 中通过通常的 PV/PVC 机制实现。
另一种模式是“Ephemeral”。 在此模式下,卷在带有 CSIVolumeSource 的 Pod 规范内部内联定义,并且它们的生命周期与该 Pod 的生命周期相关联。驱动程序必须意识到这一点,因为它只会收到针对此类卷的 NodePublishVolume 调用。
有关实现此模式的更多信息,请参阅 https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html 驱动程序可以支持这些模式中的一个或多个,并且将来可能会添加更多模式。
此字段为 beta 版。此字段是不可变的。
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 的列表
操作
get
读取指定的 CSIDriver
HTTP 请求
GET /apis/storage.k8s.io/v1/csidrivers/{name}
参数
name (在路径中):字符串,必需
CSIDriver 的名称
pretty (在查询中):字符串
响应
200 (CSIDriver):OK
401:未经授权
list
列出或监视类型为 CSIDriver 的对象
HTTP 请求
GET /apis/storage.k8s.io/v1/csidrivers
参数
allowWatchBookmarks (在查询中):布尔值
continue (在查询中):字符串
fieldSelector (在查询中):字符串
labelSelector (在查询中):字符串
limit (在查询中):整数
pretty (在查询中):字符串
resourceVersion (在查询中):字符串
resourceVersionMatch (在查询中):字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
watch (查询参数): 布尔值
响应
200 (CSIDriverList): 成功
401:未经授权
create
创建一个 CSIDriver
HTTP 请求
POST /apis/storage.k8s.io/v1/csidrivers
参数
body: CSIDriver, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (在查询中):字符串
响应
200 (CSIDriver):OK
201 (CSIDriver): 已创建
202 (CSIDriver): 已接受
401:未经授权
update
替换指定的 CSIDriver
HTTP 请求
PUT /apis/storage.k8s.io/v1/csidrivers/{name}
参数
name (在路径中):字符串,必需
CSIDriver 的名称
body: CSIDriver, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (在查询中):字符串
响应
200 (CSIDriver):OK
201 (CSIDriver): 已创建
401:未经授权
patch
部分更新指定的 CSIDriver
HTTP 请求
PATCH /apis/storage.k8s.io/v1/csidrivers/{name}
参数
name (在路径中):字符串,必需
CSIDriver 的名称
body: Patch, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
force (查询参数): 布尔值
pretty (在查询中):字符串
响应
200 (CSIDriver):OK
201 (CSIDriver): 已创建
401:未经授权
delete
删除一个 CSIDriver
HTTP 请求
DELETE /apis/storage.k8s.io/v1/csidrivers/{name}
参数
name (在路径中):字符串,必需
CSIDriver 的名称
body: DeleteOptions
dryRun (查询参数): 字符串
gracePeriodSeconds (查询参数): 整数
pretty (在查询中):字符串
propagationPolicy (查询参数): 字符串
响应
200 (CSIDriver):OK
202 (CSIDriver): 已接受
401:未经授权
deletecollection
删除 CSIDriver 集合
HTTP 请求
DELETE /apis/storage.k8s.io/v1/csidrivers
参数
body: DeleteOptions
continue (在查询中):字符串
dryRun (查询参数): 字符串
fieldSelector (在查询中):字符串
gracePeriodSeconds (查询参数): 整数
labelSelector (在查询中):字符串
limit (在查询中):整数
pretty (在查询中):字符串
propagationPolicy (查询参数): 字符串
resourceVersion (在查询中):字符串
resourceVersionMatch (在查询中):字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
响应
200 (Status): 成功
401:未经授权
此页面为自动生成。
如果您计划报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。