依標籤排程磁碟區

基於磁碟機標籤的磁碟區排程

DirectPV 提供多種方式來限制磁碟區如何排程到磁碟機

  • 可用的磁碟機空間
  • 具有親和性和反親和性的節點拓撲以及類似工具
  • 使用者定義的磁碟機標籤

您可以指派標籤來分類磁碟機類型。一旦指派,請在儲存類別參數中使用這些標籤來選擇所需的類型。

預設情況下,DirectPV 磁碟機沒有設定任何使用者定義的標籤。使用 kubectl directpv label drives 為 DirectPV 磁碟機設定使用者定義的標籤。

標籤僅在建立新磁碟區時限制排程,因為這是一個排程時間的過程。

教學

在本教學中,請將預留位置 <label-key><label-value><drive-name> 替換為根據您選擇的分類而定的適當值
  1. 在 DirectPV 磁碟機上設定標籤。

    kubectl directpv label drives <label-key>=<label-value> --drives /dev/<drive-name>
    
  2. 使用帶有 --show-labels 旗標的 list 命令來驗證標籤是否已正確設定。

    kubectl directpv list drives --drives /dev/<drive-name> --show-labels
    
  3. 建立或修改儲存類別定義。

    在定義 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
    
  4. 使用設定的新儲存類別名稱部署工作負載。

    磁碟區僅放置在標記的磁碟機上。您可以使用以下命令驗證這一點

    kubectl directpv list drives --labels <label-key>:<label-value>
    kubectl directpv list volumes