卷属性类
Kubernetes v1.31 [beta]
此页面假设您熟悉 Kubernetes 中的 StorageClasses、卷 和 持久卷。
VolumeAttributesClass 为管理员提供了一种描述他们提供的可变存储“类”的方法。不同的类可能映射到不同的服务质量级别。Kubernetes 本身对这些类表示什么并不表示意见。
这是一个测试版功能,默认情况下处于禁用状态。
如果您想在测试版期间测试该功能,则需要为 kube-controller-manager 和 kube-apiserver 启用 功能开关 VolumeAttributesClass
。您可以使用 --feature-gates
命令行参数
--feature-gates="...,VolumeAttributesClass=true"
您还需要通过 kube-apiserver
运行时配置 启用 storage.k8s.io/v1beta1
API 组。您使用以下命令行参数
--runtime-config=storage.k8s.io/v1beta1=true
您还只能将 VolumeAttributesClasses 与由 容器存储接口 支持的存储一起使用,并且仅当相关的 CSI 驱动程序实现了 ModifyVolume
API 时。
VolumeAttributesClass API
每个 VolumeAttributesClass 包含 driverName
和 parameters
,它们在需要动态供应或修改属于该类的持久卷 (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"
供应程序
每个 VolumeAttributesClass 都有一个供应程序,它确定用于供应 PV 的卷插件。必须指定 driverName
字段。
VolumeAttributesClass 的功能支持在 kubernetes-csi/external-provisioner 中实现。
您不限于指定 kubernetes-csi/external-provisioner。您还可以运行和指定外部供应程序,它们是独立的程序,遵循 Kubernetes 定义的规范。外部供应程序的作者可以完全自由地决定代码在哪里,供应程序如何发布,如何运行,使用什么卷插件等等。
调整器
每个 VolumeAttributesClass 都有一个调整器,它确定用于修改 PV 的卷插件。必须指定 driverName
字段。
VolumeAttributesClass 的修改卷功能支持在 kubernetes-csi/external-resizer 中实现。
例如,现有的持久卷声明使用名为 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 具有描述属于它们的卷的参数。根据供应程序或调整器,可能会接受不同的参数。例如,参数 iops
的值为 4000
,以及参数 throughput
是特定于 GCE PD 的。当省略参数时,会在卷供应时使用默认值。如果用户使用省略了参数的不同 VolumeAttributesClass 应用 PVC,则使用的参数默认值可能取决于 CSI 驱动程序的实现。有关更多详细信息,请参阅相关的 CSI 驱动程序文档。
VolumeAttributesClass 最多可以定义 512 个参数。包括其键和值的 parameters 对象的总长度不能超过 256 KiB。