CSIDriver

CSIDriver 捕获有关部署在集群上的容器存储接口(CSI)卷驱动程序的信息。

apiVersion: storage.k8s.io/v1

import "k8s.io/api/storage/v1"

CSIDriver

CSIDriver 捕获有关部署在集群上的容器存储接口(CSI)卷驱动程序的信息。Kubernetes 附着-分离控制器使用此对象确定是否需要附着操作。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 附着-分离控制器应调用附着卷接口,该接口会检查卷附着状态并等待卷附着完成后再继续挂载。CSI 外部附着器与 CSI 卷驱动程序协调,并在附着操作完成后更新卷附着状态。如果 CSIDriverRegistry 特性门控已启用且该值被指定为 false,则将跳过附着操作。否则将调用附着操作。

    此字段不可变。

  • fsGroupPolicy (字符串)

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

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

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

  • nodeAllocatableUpdatePeriodSeconds (int64)

    nodeAllocatableUpdatePeriodSeconds 指定此驱动程序的 CSINode 可分配容量定期更新之间的间隔。设置后,将启用定期更新和由容量相关故障触发的更新。如果未设置,则不进行任何更新(无论是定期的还是检测到容量相关故障时),且 allocatable.count 保持静态。此字段允许的最小值为 10 秒。

    这是 Alpha 特性,需要启用 MutableCSINodeAllocatableCount 特性门控。

    此字段可变。

  • 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 中的一个新特性。它仅对于同时支持 "Persistent" 和 "Ephemeral" 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 选项单独挂载。对于将卷作为块设备上的文件系统或独立的共享卷提供的存储后端而言,这很典型。当挂载在 Pod 中使用的、已明确设置 SELinux 上下文的 ReadWriteOncePod 卷时,Kubernetes 将使用 "-o context=xyz" 挂载选项调用 NodeStage / NodePublish。将来,它可能会扩展到其他卷访问模式。无论如何,Kubernetes 将确保卷仅使用单个 SELinux 上下文进行挂载。

    当为 "false" 时,Kubernetes 不会向驱动程序传递任何特殊的 SELinux 挂载选项。对于表示较大共享文件系统的子目录的卷而言,这很典型。

    默认为 "false"。

  • storageCapacity (布尔值)

    storageCapacity 表明如果设置为 true,则 CSI 卷驱动程序希望 Pod 调度考虑驱动程序部署通过创建包含容量信息的 CSIStorageCapacity 对象来报告的存储容量。

    在部署驱动程序时,可以立即启用检查。在这种情况下,通过延迟绑定 Provisioning 新卷将暂停,直到驱动程序部署已发布某些合适的 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": <expiration timestamp in RFC3339>, }, ... }

    注意:每个 TokenRequest 中的 Audience 应不同,并且最多只能有一个令牌是空字符串。要在到期后接收新令牌,可以使用 RequiresRepublish 来周期性地触发 NodePublishVolume。

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

    • tokenRequests.audience (字符串),必需

      audience 是 "TokenRequestSpec" 中令牌的预期受众。它默认为 kube apiserver 的受众。

    • tokenRequests.expirationSeconds (int64)

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

  • volumeLifecycleModes ([]string)

    集合:合并期间将保留唯一值

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

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

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

    此字段是 Beta 版。此字段不可变。

CSIDriverList

CSIDriverList 是 CSIDriver 对象的集合。


操作


get 读取指定的 CSIDriver

HTTP 请求

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

参数

  • name (在路径中):字符串,必需

    CSIDriver 的名称

  • pretty (在查询中):字符串

    pretty

响应

200 (CSIDriver):成功 (OK)

401:未授权 (Unauthorized)

list 列出或监视 CSIDriver 类型的对象

HTTP 请求

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

参数

响应

200 (CSIDriverList):成功 (OK)

401:未授权 (Unauthorized)

create 创建一个 CSIDriver

HTTP 请求

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

参数

响应

200 (CSIDriver):成功 (OK)

201 (CSIDriver):已创建 (Created)

202 (CSIDriver):已接受 (Accepted)

401:未授权 (Unauthorized)

update 替换指定的 CSIDriver

HTTP 请求

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

参数

  • name (在路径中):字符串,必需

    CSIDriver 的名称

  • body: CSIDriver,必需

  • dryRun (在查询中):字符串

    dryRun

  • fieldManager (在查询中):字符串

    fieldManager

  • fieldValidation (在查询中):字符串

    fieldValidation

  • pretty (在查询中):字符串

    pretty

响应

200 (CSIDriver):成功 (OK)

201 (CSIDriver):已创建 (Created)

401:未授权 (Unauthorized)

patch 部分更新指定的 CSIDriver

HTTP 请求

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

参数

  • name (在路径中):字符串,必需

    CSIDriver 的名称

  • body: Patch,必需

  • dryRun (在查询中):字符串

    dryRun

  • fieldManager (在查询中):字符串

    fieldManager

  • fieldValidation (在查询中):字符串

    fieldValidation

  • force (在查询中):布尔值

    force

  • pretty (在查询中):字符串

    pretty

响应

200 (CSIDriver):成功 (OK)

201 (CSIDriver):已创建 (Created)

401:未授权 (Unauthorized)

delete 删除一个 CSIDriver

HTTP 请求

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

参数

响应

200 (CSIDriver):成功 (OK)

202 (CSIDriver):已接受 (Accepted)

401:未授权 (Unauthorized)

deletecollection 删除 CSIDriver 的集合

HTTP 请求

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

参数

响应

200 (Status):成功 (OK)

401:未授权 (Unauthorized)

本页面是自动生成的。

如果您打算报告本页面的问题,请在问题描述中提及本页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改于 2025 年 4 月 24 日太平洋标准时间上午 9:14:v1.33 的 Markdown API 参考 (b84ec30bbb) Markdown API reference for v1.33 (b84ec30bbb)