すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:NAS ボリュームを CNFS を使用して自動的に拡張する

最終更新日:Apr 28, 2025

File Storage NAS (NAS) ボリュームに、Container Network File System (CNFS) で管理されている自動拡張ポリシーを定義して、ストレージ使用量がしきい値を超えたときに NAS ボリュームを自動的に拡張できます。このトピックでは、CNFS を使用して NAS ボリュームを自動的に拡張する方法について説明します。

前提条件

  • クラスターは、CNFS を使用して NAS ファイルシステムを管理できます。詳細については、「CNFS を使用して NAS ファイルシステムを管理する(推奨)」をご参照ください。

  • クラスターは CSI プラグインを使用しており、ストレージ関連のコンポーネントは次の要件を満たしている必要があります。

    • csi-plugin および csi-provisioner のバージョンが 1.20.5-ff6490f-aliyun 以降であること。 csi-plugin および csi-provisioner の更新方法の詳細については、「csi-plugin および csi-provisioner を更新する」をご参照ください。

    • csi-plugin のデフォルトの dnsPolicyClusterFirst です。CNFS を使用して NAS ボリュームを自動的に拡張するには、デフォルトの dnsPolicy を ClusterFirst から ClusterFirstWithHostNet に変更する必要があります。

    • storage-operator のバージョンが 1.18.8.56-2aa33ba-aliyun 以降であること。詳細については、「storage-operator」をご参照ください。

手順 1:storage-operator自動拡張 コンポーネントを設定し、を有効にする

storage-operator コンポーネントのデフォルトの storage-auto-expander は、ストレージリソースの自動拡張を担当します。クラスターに接続し、次のコマンドを実行して storage-operator の ConfigMap ファイルを変更し、自動拡張機能を有効にします。

kubectl patch configmap/storage-operator \
  -n kube-system \
  --type merge \
  -p '{"data":{"storage-auto-expander":"{\"imageRep\":\"acs/storage-auto-expander\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-auto-expander/install.yaml\",\"type\":\"deployment\"}"}}'

手順 2:自動拡張ポリシーを設定する

  1. CNFS オブジェクトのステータスを表示します。[使用可能] 状態であることを確認します。

    1. CNFS オブジェクトをクエリします。

      kubectl get cnfs

      予想される出力:

      NAME                                      AGE
      default-cnfs-nas-837d6ea-20210819155623   14d
    2. CNFS オブジェクトのステータスを表示します。

      kubectl get cnfs <前の手順でクエリした CNFS オブジェクト> -o yaml | grep Available

      予想される出力:

      status: Available
  2. 次の YAML テンプレートを使用して、NAS ボリュームの自動拡張ポリシーを作成します。

    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1alpha1
    kind: StorageAutoScalerPolicy
    metadata:
      name: hybrid-expand-policy
    spec:
      pvcSelector:
        matchLabels:
          app: nginx      # 永続ボリューム要求 (PVC) と、NAS ボリュームがマウントされているデプロイメントに追加されるラベルを指定する必要があります。この例では、app: nginx を指定します。
      namespaces:
        - default
        - nginx
      conditions:
        - name: condition1
          key: volume-capacity-used-percentage
          operator: Gt
          values:
            - "80"
      actions:
        - name: action1
          type: volume-expand
          params:
            scale: 100%
            limits: 500Gi
    EOF

    パラメーター

    説明

    pvcSelector

    拡張ポリシーと、NAS ボリュームのマウントに使用される PVC を照合するために使用されるラベル。この例では、nginx が使用されています。

    namespaces

    NAS ボリュームのマウントに使用される PVC の名前空間。複数の名前空間を指定する場合、名前空間間の論理演算子は OR です。デフォルト値:default。この例では、defaultnginx が指定されています。

    conditions

    アクションをトリガーする条件。複数の conditions 間の論理演算子は AND です。各 condition には、次のパラメーターが含まれます。

    • key:メトリックのタイプ。

    • volume-capacity-used-percentage:ストレージ使用量のしきい値をパーセンテージで表すことを指定します。

    • operator:演算子。Gt(より大きい)、Lt(より小さい)、Eq(等しい)、または Ne(等しくない)を指定できます。パラメーター値は大文字と小文字を区別しません。

    • values:しきい値。

    この例では、PVC のストレージ使用率が 80% を超えると action がトリガーされるように条件が指定されています。

    actions

    上記の conditions が満たされたときに実行されるアクション。複数のアクションが許可されます。各アクションには、次のパラメーターが含まれます。

    • type:アクションのタイプ。volume-expand のみがサポートされています。

    • scale:ボリュームに追加するストレージのサイズ。有効な単位:GiB およびパーセンテージ (%)。

    • limitsaction が実行された場合の PVC の最大容量。

    アクション セクションで複数の アクション が指定されている場合、条件が満たされた最初の アクション が実行されます。その他の アクション はスキップされます。

    この例では、action1 は、条件が満たされた場合、NAS ボリュームが 100% 拡張されることを指定しています。NAS ボリュームは最大 500 GiB まで拡張できます。

  3. 次の YAML テンプレートを使用して、PVC とデプロイメントを作成します。

    重要

    自動拡張ポリシーは、指定されたラベルを持つ PVC とデプロイメントに適用されます。この例では、自動拡張ポリシーで pvcSelector.matchLabelsapp: nginx に設定されています。この場合、ポリシーは labels パラメーターが app: nginx に設定されている PVC とデプロイメントに適用されます。

    cat << EOF | kubectl apply -f -
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-nas-pvc
      labels:
        app: nginx   # 拡張ポリシーの YAML テンプレートの pvcSelector.matchLabels パラメーターと同じ値を指定する必要があります。この例では、app: nginx を指定します。
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alibabacloud-cnfs-nas
      resources:
        requests:
          storage: 50Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnfs-nas-deployment
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx   # 拡張ポリシーの YAML テンプレートの pvcSelector.matchLabels パラメーターと同じ値を指定する必要があります。この例では、app: nginx を指定します。
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            volumeMounts:
            - mountPath: "/data"
              name: cnfs-nas-pvc
          volumes:
          - name: cnfs-nas-pvc
            persistentVolumeClaim:
              claimName: cnfs-nas-pvc
    EOF

手順 3:NAS ボリュームが自動的に拡張できることを確認する

  1. [default] 名前空間のすべてのポッドをクエリします。

    kubectl get pod

    予想される出力:

    NAME                                                            READY   STATUS    RESTARTS   AGE
    cnfs-nas-deployment-56dbcc7fb7-wh79z   1/1      Running            0          20m
  2. アプリケーション ポッドにログオンし、NAS ボリュームがマウントされているディレクトリに 50 GiB のデータを書き込みます。

    cd /data
    dd if=<データパス> of=<マウントパス>
    kubectl exec -it cnfs-nas-deployment-56dbcc7fb7-wh79z -ti -- dd if=/dev/zero of=/data/test1 bs=1G count=50
  3. ボリューム拡張に関連するイベントを確認します。

    kubectl get events

    次の出力は、NAS ボリュームのストレージ使用量が 80% を超え、ボリューム拡張がトリガーされたことを示しています。NAS ボリュームは 50 GiB から 100 GiB に拡張されます。

    12s         Warning   StartExpand                  persistentvolumeclaim/cnfs-nas-pvc          Start to expand of pvc cnfs-nas-pvc from 50Gi to 100Gi, usedCapacityPercentage:96%, freeSize:2048MB.
    12s         Normal    ExternalExpanding            persistentvolumeclaim/cnfs-nas-pvc          waiting for an external controller to expand this PVC
    12s         Normal    Resizing                     persistentvolumeclaim/cnfs-nas-pvc          External resizer is resizing volume nas-462db2b2-717d-44fe-b0b6-fb4db03a****
    12s         Normal    VolumeResizeSuccessful       persistentvolumeclaim/cnfs-nas-pvc          Resize volume succeeded
  4. CSI NAS ダッシュボードでボリュームの使用状況情報を確認します。

    1. ACK コンソール にログオンします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のペインで、[操作] > Prometheus モニタリング を選択します。

    3. [Prometheus モニタリング] ページで、[ストレージモニタリング] > CSI NAS を選択します。

    4. [CSI NAS] タブで、NAS ストレージボリュームが配置されている名前空間と PVC を選択します。次に、合計容量セクションで NAS ボリュームの容量を表示できます。

      この例では、[名前空間][default] に設定し、[PVC][cnfs-nas-pvc] に設定します。NAS存储卷容量

      上記のグラフは、10:23:30 に拡張が発生し、NAS ボリュームが 100 GiB に拡張されたことを示しています。