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

Container Service for Kubernetes:動的にプロビジョニングされたクラウドディスクを永続ストレージとして使用 - Flexvolume

最終更新日:Feb 26, 2026

コンテナーがダウンした場合、ステートフルサービスはデータ損失またはデータの信頼性が損なわれるリスクがあります。永続ストレージは、この問題を防止します。このトピックでは、動的にプロビジョニングされたクラウドディスクを使用して永続ストレージを提供する方法について説明します。

背景情報

動的にプロビジョニングされたクラウドディスクのユースケース:

クラウドディスクがない場合、アプリケーションをデプロイするとシステムが自動的にプロビジョニングします。

動的にプロビジョニングされたクラウドディスクを使用するには:

  1. 永続ボリューム要求 (PVC) を手動で作成し、PVC 内で StorageClass を宣言します。

  2. アプリケーションをデプロイします。その後、システムは StorageClass に基づいて永続ボリューム (PV) を自動的に作成します。

前提条件

Provisioner プラグイン

Container Service for Kubernetes (ACK) は、クラスターを作成する際に Provisioner プラグインを自動的にインストールします。

StorageClass の作成

Alibaba Cloud Container Service for Kubernetes (ACK) は、システム初期化中に4つのデフォルト StorageClass を作成します。これらの StorageClass はデフォルトのパラメーターを使用し、シングルゾーンクラスターにのみ適用されます。マルチゾーンクラスターの場合、独自の StorageClass を作成する必要があります。4つのデフォルト StorageClass は次のとおりです。

  • alicloud-disk-common: 基本ディスクを自動的に作成します。

  • alicloud-disk-efficiency: Ultra ディスクを自動的に作成します。

  • alicloud-disk-ssd: 標準 SSD を自動的に作成します。

  • alicloud-disk-available: これは高可用性 (HA) オプションです。まず標準 SSD の作成を試行します。ゾーン内の標準 SSD リソースが枯渇している場合、Ultra ディスクの作成を試行します。

  1. storageclass.yaml ファイルを作成します。

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: alicloud-disk-ssd-hangzhou-b
    provisioner: alicloud/disk
    reclaimPolicy: Retain
    parameters:
      type: cloud_ssd
      regionId: cn-hangzhou
      zoneId: cn-hangzhou-b
      fstype: "ext4"
      readonly: "false"

    パラメーター

    説明

    provisioner

    provisioner プラグインを使用して Alibaba Cloud ディスクを自動的に作成するには、`alicloud/disk` に設定します。

    reclaimPolicy

    ディスクの reclaimPolicy は、DeleteRetain をサポートしており、デフォルトは Delete です。

    説明

    Delete に設定されている場合、PVC を削除するとディスクも削除され、ディスク上のデータは回復できません。

    type

    自動的に作成されるクラウドディスクのタイプで、cloudcloud_efficiencycloud_ssdavailable をサポートします。

    regionId

    (オプション) クラウドディスクが自動的に作成されるリージョン ID。これはクラスターのリージョンと同じである必要があります。

    zoneId

    (オプション) クラウドディスクが自動的に作成されるゾーン ID。

    • シングルゾーンクラスターの場合、クラスターと同じゾーンを使用します。

    • マルチゾーンクラスターの場合、次のように複数の `zoneId` 値を設定します。

      zoneid: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c

    fstype

    (オプション) クラウドディスクの自動作成に使用されるファイルシステムで、デフォルトは ext4 です。

    readonly

    (オプション) 自動的に作成されるクラウドディスクが読み取り専用権限でマウントされるかどうか。有効な値: true — クラウドディスクは読み取り専用権限を持ちます。false — クラウドディスクは読み書き権限を持ちます。デフォルト値: false

    encrypted

    (オプション) 自動的に作成されるディスクを暗号化するかどうか。true: 暗号化されます。false: 暗号化されません。デフォルトは false です。

  2. 次のコマンドを実行して StorageClass を作成します。

    kubectl create -f storageclass.yaml

PVC の作成

  1. pvc-ssd.yaml ファイルを作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: disk-ssd
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: alicloud-disk-ssd-hangzhou-b
      resources:
        requests:
          storage: 20Gi
  2. 次のコマンドを実行して PVC を作成します。

    kubectl create -f pvc-ssd.yaml

クラスターページで、左側のナビゲーションウィンドウの ボリューム > ボリュームクレーム をクリックします。作成された PVC と、それにバインドされている永続ボリューム (PV) を表示できます。PVC の StorageClassalicloud-disk-ssd-hangzhou-b です。

アプリケーションの作成

  1. pvc-dynamic.yaml ファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-dynamic
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
              - name: disk-pvc
                mountPath: "/data"
          volumes:
            - name: disk-pvc
              persistentVolumeClaim:
                claimName: disk-ssd
  2. 次のコマンドを実行してデプロイメントを作成します。

    kubectl create -f nginx-dynamic.yaml

クラスターページで、左側のナビゲーションウィンドウの ワークロード > デプロイメント をクリックします。その後、作成したデプロイメントを表示します。

動的にプロビジョニングされたクラウドディスクの永続ストレージ

  1. 次のコマンドを実行して、デプロイメントの Pod の名前を表示します。

    kubectl get pod | grep dynamic

    期待される出力:

    nginx-dynamic-5c74594ccb-zl9pf     2/2     Running   0          3m
  2. 次のコマンドを実行して、新しいクラウドディスクが /data パスにマウントされているかどうかを確認します。

    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- df | grep data

    期待される出力:

    /dev/vdh        20511312    45080  20449848   1% /data
  3. 次のコマンドを実行して、/data パス内のファイルを表示します。

    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- ls /data

    期待される出力:

    lost+found
  4. 次のコマンドを実行して、/data パスに dynamic ファイルを作成します。

    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- touch /data/dynamic
  5. 次のコマンドを実行して、/data パス内のファイルを表示します。

    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- ls /data

    期待される出力:

    dynamic
    lost+found
  6. 次のコマンドを実行して、nginx-dynamic-5c74594ccb-zl9pf という名前の Pod を削除します。

    kubectl delete pod nginx-dynamic-5c74594ccb-zl9pf

    期待される出力:

    pod "nginx-dynamic-5c74594ccb-zl9pf" deleted
  7. 別のターミナルウィンドウで、次のコマンドを実行して Pod の削除および再作成プロセスを監視します。

    kubectl get pod -w -l app=nginx

    期待される出力:

    NAME                               READY   STATUS    RESTARTS   AGE
    nginx-dynamic-5c74594ccb-zl9pf     2/2     Running   0          6m48s
    nginx-dynamic-5c74594ccb-zl9pf   2/2   Terminating   0     7m32s
    nginx-dynamic-5c74594ccb-45sd4   0/2   Pending   0     0s
    nginx-dynamic-5c74594ccb-45sd4   0/2   Pending   0     0s
    nginx-dynamic-5c74594ccb-45sd4   0/2   Init:0/1   0     0s
    nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m32s
    nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m33s
    nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m33s
    nginx-dynamic-5c74594ccb-45sd4   0/2   PodInitializing   0     5s
    nginx-dynamic-5c74594ccb-45sd4   2/2   Running   0     22s
  8. 次のコマンドを実行して、再作成された Pod の名前を表示します。

    kubectl get pod 

    期待される出力:

    NAME                               READY   STATUS      RESTARTS   AGE
    nginx-dynamic-5c74594ccb-45sd4     2/2     Running     0          2m
  9. 次のコマンドを実行して、/data パス内のファイルを表示します。作成した dynamic ファイルは削除されていません。これは、動的にプロビジョニングされたクラウドディスク上のデータが永続的であることを示しています。

    kubectl exec nginx-dynamic-5c74594ccb-45sd4 -- ls /data

    期待される出力:

    dynamic
    lost+found