卷属性类

功能状态: Kubernetes v1.31 [beta](默认禁用:false)

此页面假设您熟悉 Kubernetes 中的 StorageClassesPersistentVolumes

VolumeAttributesClass 为管理员提供了一种描述他们提供的可变存储“类”的方法。不同的类可能映射到不同的服务质量级别。Kubernetes 本身对于这些类代表什么没有固定的看法。

这是一个 Beta 功能,默认情况下禁用。

如果您想在 Beta 阶段测试该功能,您需要为 kube-controller-manager、kube-scheduler 和 kube-apiserver 启用 VolumeAttributesClass 特性门控。您可以使用 --feature-gates 命令行参数。

--feature-gates="...,VolumeAttributesClass=true"

您还需要通过 kube-apiserver runtime-config 启用 storage.k8s.io/v1beta1 API 组。您可以使用以下命令行参数。

--runtime-config=storage.k8s.io/v1beta1=true

您还可以仅将 VolumeAttributesClasses 与由 容器存储接口 支持的存储一起使用,并且仅在相关的 CSI 驱动程序实现 ModifyVolume API 的情况下。

VolumeAttributesClass API

每个 VolumeAttributesClass 都包含 driverNameparameters,当需要动态配置或修改属于该类的 PersistentVolume (PV) 时使用。

VolumeAttributesClass 对象的名称非常重要,用户可以通过它请求特定的类。管理员在首次创建 VolumeAttributesClass 对象时设置类的名称和其他参数。虽然 PersistentVolumeClaim 中 VolumeAttributesClass 对象的名称是可变的,但现有类中的参数是不可变的。

apiVersion: storage.k8s.io/v1beta1
kind: VolumeAttributesClass
metadata:
  name: silver
driverName: pd.csi.storage.gke.io
parameters:
  provisioned-iops: "3000"
  provisioned-throughput: "50" 

Provisioner

每个 VolumeAttributesClass 都有一个 provisioner,它确定用于配置 PV 的卷插件。必须指定 driverName 字段。

VolumeAttributesClass 的功能支持在 kubernetes-csi/external-provisioner 中实现。

您不限于指定 kubernetes-csi/external-provisioner。您还可以运行和指定外部 provisioner,这些 provisioner 是遵循 Kubernetes 定义的规范的独立程序。外部 provisioner 的作者可以完全自行决定其代码的位置、provisioner 的发布方式、运行方式、使用的卷插件等。

Resizer

每个 VolumeAttributesClass 都有一个 resizer,它确定用于修改 PV 的卷插件。必须指定 driverName 字段。

VolumeAttributesClass 修改卷的功能支持在 kubernetes-csi/external-resizer 中实现。

例如,现有的 PersistentVolumeClaim 正在使用名为 silver 的 VolumeAttributesClass。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pv-claim
spec:
  
  volumeAttributesClassName: silver
  

集群中提供了一个新的 VolumeAttributesClass gold。

apiVersion: storage.k8s.io/v1beta1
kind: VolumeAttributesClass
metadata:
  name: gold
driverName: pd.csi.storage.gke.io
parameters:
  iops: "4000"
  throughput: "60"

最终用户可以使用新的 VolumeAttributesClass gold 更新 PVC 并应用。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pv-claim
spec:
  
  volumeAttributesClassName: gold
  

参数

VolumeAttributeClasses 具有描述属于它们的卷的参数。根据 provisioner 或 resizer,可能接受不同的参数。例如,参数 iops 的值 4000 和参数 throughput 特定于 GCE PD。当省略参数时,在卷配置时使用默认值。如果用户应用具有省略参数的不同 VolumeAttributesClass 的 PVC,则根据 CSI 驱动程序的实现,可以使用参数的默认值。有关更多详细信息,请参阅相关的 CSI 驱动程序文档。

一个 VolumeAttributesClass 最多可以定义 512 个参数。参数对象(包括其键和值)的总长度不能超过 256 KiB。

上次修改时间为太平洋标准时间 2024 年 8 月 19 日下午 12:08:修复 volume-attributes-classes.md 功能门控要求 (d29ccb8319)