按标签调度卷
基于驱动器标签的卷调度
DirectPV 提供了多种方式来限制卷如何调度到驱动器:
- 可用磁盘空间
- 具有亲和性和反亲和性及类似工具的节点拓扑
- 用户定义的驱动器标签
您可以为驱动器类型分配标签进行分类。 分配后,可以在存储类参数中使用这些标签来选择所需的类型。
默认情况下,DirectPV 驱动器上未设置任何用户定义的标签。
使用kubectl directpv label drives为 DirectPV 驱动器设置用户自定义标签。
标签仅在创建新卷时限制调度,因为这是一个调度时过程。
教程
在本教程中,请替换所有占位符
<label-key>,<label-value>和<drive-name>根据您选择的分类,填入适当的值-
在 DirectPV 驱动器上设置标签。
kubectl directpv label drives <label-key>=<label-value> --drives /dev/<drive-name> -
使用以下命令验证标签是否正确设置:
list带有命令的--show-labelsflag.kubectl directpv list drives --drives /dev/<drive-name> --show-labels -
创建或修改存储类定义。
设置一个
parameter定义 YAML 中的值。 该值应遵循以下形式directpv-min-io/<label-key>: <label-value>.parameters: directpv.min.io/<label-key>: <label-value>请参考默认存储类kubectl get storageclass directpv-min-io -n directpv -o yaml比较并检查新存储类中是否包含所有字段。以下 YAML 是一个包含存储类定义的示例:
parameterssection:allowVolumeExpansion: false allowedTopologies: - matchLabelExpressions: - key: directpv.min.io/identity values: - directpv-min-io apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: finalizers: - foregroundDeletion labels: application-name: directpv.min.io application-type: CSIDriver directpv.min.io/created-by: kubectl-directpv directpv.min.io/version: v1beta1 name: directpv-min-io-new # Define any storage class name of your choice resourceVersion: "511457" uid: e93d8dab-b182-482f-b8eb-c69d4a1ec62d parameters: fstype: xfs directpv.min.io/<label-key>: <label-value> provisioner: directpv-min-io reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer -
使用新设置的存储类名称部署工作负载。
卷仅放置在标记的驱动器上。 您可以使用以下命令验证这一点:
kubectl directpv list drives --labels <label-key>:<label-value> kubectl directpv list volumes