卷属性类
Kubernetes v1.34 [stable]
(enabled by default: true)本页假设你已经熟悉 Kubernetes 中的 StorageClass、 Volume 和 PersistentVolume。
卷属性类(VolumeAttributesClass)为管理员提供了一种描述可变更的存储“类”的方法。 不同的类可以映射到不同的服务质量级别。Kubernetes 本身不关注这些类代表什么。
此特性从 Kubernetes 1.34 版本开始一般可用(GA),用户可以选择禁用它。
另外你只有在使用容器存储接口(CSI)支持的存储时才能使用
VolumeAttributesClass,并且要求相关的 CSI 驱动实现了 ModifyVolume
API。
VolumeAttributesClass API
每个 VolumeAttributesClass 都包含 driverName
和 parameters
字段,
当属于此类的持久卷(PV)需要被动态制备或修改时系统会使用这两个字段。
VolumeAttributesClass 对象的名称比较重要,用户用对象名称来请求特定的类。
管理员在首次创建 VolumeAttributesClass 对象时会设置某个类的名称和其他参数。
虽然在 PersistentVolumeClaim
中 VolumeAttributesClass 对象的名称是可变的,
但现有类中的参数是不可变的。
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
name: silver
driverName: pd.csi.storage.gke.io
parameters:
provisioned-iops: "3000"
provisioned-throughput: "50"
存储制备器
每个 VolumeAttributesClass 都有一个制备器(Provisioner),用来决定使用哪个卷插件制备 PV。
driverName
字段是必填项。
针对 VolumeAttributesClass 的特性支持在 kubernetes-csi/external-provisioner 中实现。
你并非必须指定 kubernetes-csi/external-provisioner。 你也可以运行并指定外部制备器,它们是遵循 Kubernetes 所定义的规范的独立程序。 外部制备器的作者可以完全自行决定他们的代码放在哪儿、如何交付制备器、以何种方式运行、使用什么卷插件等。
要了解制备组件如何使用 VolumeAttributesClass,请参阅 CSI 外部制备器文档。
调整器
每个 VolumeAttributesClass 都有一个调整器(Resizer),用于确定修改 PV 所用的卷插件。
driverName
字段是必填项。
针对 VolumeAttributesClass 的修改卷特性支持在 kubernetes-csi/external-resizer 中实现。
如以下 YAML 所示,有一个 PersistentVolumeClaim 使用名为 silver 的 VolumeAttributesClass:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pv-claim
spec:
…
volumeAttributesClassName: silver
…
集群中有一个新的名为 gold 的 VolumeAttributesClass:
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
name: gold
driverName: pd.csi.storage.gke.io
parameters:
iops: "4000"
throughput: "60"
最终用户可以更新 PVC,使之使用新的名为 gold 的 VolumeAttributesClass,并应用此更新:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pv-claim
spec:
…
volumeAttributesClassName: gold
…
要了解扩缩容组件如何使用 VolumeAttributesClass,请参阅 CSI 外部扩缩容组件文档。
参数
VolumeAttributeClass 具有参数,用来描述隶属于该类的存储卷。可接受的参数可能因制备器或调整器而异。
例如,参数 iops
的取值 4000
和参数 throughput
是特定于 GCE PD 的。
如果某个参数被省略,则在卷制备时使用默认值。
如果用户使用带有省略参数的不同 VolumeAttributesClass 来应用 PVC,参数的默认取值可能会因 CSI 驱动实现而异。
有关细节参阅相关的 CSI 驱动文档。
VolumeAttributesClass 最多可以定义 512 个参数。 这些参数对象的总长度(包括其键和值)不能超过 256 KiB。