按标签调度卷
基于驱动器标签的卷调度
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>
-
使用带有
--show-labels
标志的list
命令验证标签是否已正确设置。kubectl directpv list drives --drives /dev/<drive-name> --show-labels
-
创建或修改存储类定义。
在定义 YAML 中设置
parameter
值。该值应遵循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 是包含
parameters
部分的存储类定义示例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