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

Container Service for Kubernetes:永続ストレージ用の静的クラウドディスクボリューム - FlexVolume

最終更新日:Jun 21, 2026

ステートフルサービス内のコンテナで障害が発生すると、データが失われる可能性があります。永続ストレージは、このようなデータ損失を防ぎます。このドキュメントでは、静的にプロビジョニングされたクラウドディスクボリュームを永続ストレージに使用する方法について説明します。

前提条件

次の作業が完了していることを確認してください。

背景情報

クラウドディスクの一般的な使用例は次のとおりです。

  • MySQL や Redis など、高いディスク I/O を必要とし、データ共有を必要としないデータストレージサービス。

  • 高速なログ書き込み。

  • Pod のライフサイクルを超えたデータの永続化。

既存のクラウドディスクがある場合は、静的にプロビジョニングされたボリュームを使用します。

静的にプロビジョニングされたクラウドディスクボリュームを使用するには、PersistentVolume (PV) と PersistentVolumeClaim (PVC) を手動で作成する必要があります。詳細については、「静的にプロビジョニングされたクラウドディスクボリュームの使用」をご参照ください。

制限事項

  • クラウドディスクは共有されず、一度に 1 つの Pod にのみマウントできます。

  • クラウドディスクは、同じゾーン内のノードにのみマウントできます。

PVの作成

  1. pv-static.yaml という名前のファイルを作成します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: <your-disk-id>
      labels:
        alicloud-pvname: <your-disk-id>
        failure-domain.beta.kubernetes.io/zone: <your-zone>
        failure-domain.beta.kubernetes.io/region: <your-region>
    spec:
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteOnce
      flexVolume:
        driver: "alicloud/disk"
        fsType: "ext4"
        options:
          volumeId: "<your-disk-id>"
    説明
    • alicloud-pvname: <your-disk-id>:PV の名前。クラウドディスク ID と同じである必要があります。

    • failure-domain.beta.kubernetes.io/zone: <your-zone>:クラウドディスクが配置されているゾーン。例: cn-hangzhou-b

    • failure-domain.beta.kubernetes.io/region: <your-region>:クラウドディスクが配置されているリージョン。例: cn-hangzhou

    クラスターが複数のゾーンにまたがる場合は、failure-domain.beta.kubernetes.io/zonefailure-domain.beta.kubernetes.io/region を指定する必要があります。これにより、Pod がクラウドディスクと同じゾーンにスケジュールされるようになります。

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

    kubectl create -f pv-static.yaml

    [検証結果]

    1. ACK コンソールにログインします。

    2. 左側のナビゲーションペインで、クラスターリスト をクリックします。

    3. クラスターリスト ページで、目的のクラスターの名前をクリックするか、Actions 列の 詳細 をクリックします。

    4. クラスター管理ページの左側のナビゲーションペインで、ボリューム > ボリューム を選択します。リストで新しく作成された PV を表示できます。容量は 20Gi、アクセスモードは ReadWriteOnce、再利用ポリシーは Retain、ステータスは Available です。PV は、default 名前空間の永続ボリューム要求 pvc-disk にバインドされます。[操作] 列には、[タグの管理][YAML の表示]、および [削除] のオプションがあります。

PVCの作成

  1. pvc-static.yaml という名前のファイルを作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-disk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      selector:
        matchLabels:
          alicloud-pvname: <your-disk-id>
  2. 次のコマンドを実行して PVC を作成します。

    kubectl create -f pvc-static.yaml

    [検証結果]

    1. ACK コンソールにログインします。

    2. 左側のナビゲーションペインで、クラスターリスト をクリックします。

    3. クラスターリスト ページで、対象クラスターの名前をクリックするか、Actions 列の 詳細 をクリックします。

    4. クラスター管理ページの左側のナビゲーションペインで、ボリューム > ボリュームクレーム を選択します。

    5. ボリュームクレーム ページで、作成した PVC を表示できます。

アプリケーションの作成

  1. static.yaml という名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-static
      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: pvc-disk
  2. 次のコマンドを実行してアプリケーションを作成します。

    kubectl create -f static.yaml

    [検証結果]

    1. ACK コンソールにログインします。

    2. 左側のナビゲーションペインで、クラスターリスト をクリックします。

    3. クラスターリスト ページで、対象のクラスターの名前をクリックするか、アクション 列の 詳細 をクリックします。

    4. クラスター管理ページの左側のナビゲーションペインで、ワークロード > デプロイメントを選択します。

    5. デプロイメントページで、作成したアプリケーションを表示できます。

データの永続性の検証

  1. 次のコマンドを実行して、アプリケーション Pod の名前を取得します。

    kubectl get pod | grep static

    出力例:

    nginx-static-78c7dcb9d7-g****   1/1     Running     0          32s
  2. 次のコマンドを実行して、クラウドディスクが /data パスにマウントされていることを確認します。

    kubectl exec nginx-static-78c7dcb9d7-g**** -- df | grep data

    出力例:

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

    kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /data

    出力例:

    lost+found
  4. static という名前のファイルを /data パスに作成します。

    kubectl exec nginx-static-78c7dcb9d7-g**** -- touch /data/static
  5. 次のコマンドを実行して、/data パス内のファイルを一覧表示します。

    kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /data

    出力例:

    static
    lost+found
  6. nginx-static-78c7dcb9d7-g**** という名前の Pod を削除するには、次のコマンドを実行します。

    kubectl delete pod nginx-static-78c7dcb9d7-g****

    出力例:

    pod "nginx-static-78c7dcb9d7-g****" deleted
  7. 別のターミナルウィンドウで、次のコマンドを実行して、Kubernetes が Pod を削除して再作成する様子を監視します。

    kubectl get pod -w -l app=nginx

    出力例:

    NAME                            READY   STATUS            RESTARTS   AGE
    nginx-static-78c7dcb9d7-g****   1/1     Running           0          50s
    nginx-static-78c7dcb9d7-g****   1/1     Terminating       0          72s
    nginx-static-78c7dcb9d7-h****   0/1     Pending           0          0s
    nginx-static-78c7dcb9d7-h****   0/1     Pending           0          0s
    nginx-static-78c7dcb9d7-h****   0/1     Init:0/1          0          0s
    nginx-static-78c7dcb9d7-g****   0/1     Terminating       0          73s
    nginx-static-78c7dcb9d7-h****   0/1     Init:0/1          0          5s
    nginx-static-78c7dcb9d7-g****   0/1     Terminating       0          78s
    nginx-static-78c7dcb9d7-g****   0/1     Terminating       0          78s
    nginx-static-78c7dcb9d7-h****   0/1     PodInitializing   0          6s
    nginx-static-78c7dcb9d7-h****   1/1     Running           0          8s
  8. 次のコマンドを実行して、再作成された Pod の名前を取得します。

    kubectl get pod

    出力例:

    NAME                            READY   STATUS      RESTARTS   AGE
    nginx-static-78c7dcb9d7-h****   1/1     Running     0          14s
  9. 次のコマンドを実行して、/data パス内のファイルを一覧表示します。作成した static ファイルがまだ存在していることから、静的にプロビジョニングされたクラウドディスク上のデータの永続性が確認できます。

    kubectl exec nginx-static-78c7dcb9d7-h**** -- ls /data

    出力例:

    static
    lost+found