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

Container Service for Kubernetes:動的プロビジョニングされたクラウドディスクボリュームの使用

最終更新日:Mar 27, 2026

サーバーレス Kubernetes (ACK Serverless) は、Container Storage Interface (CSI) プラグインを使用して、オンデマンドで Alibaba Cloud のディスクボリュームを自動的にプロビジョニングします。このトピックでは、StorageClass の作成、永続ボリューム要求 (PVC) を用いたストレージの要求、およびステートフルアプリケーションへのボリュームのマウント方法について説明します。

利用シーン

ディスクボリュームは、パフォーマンス専有型の高性能ブロックストレージを必要とするワークロードに適しています。

  • Pod 間でデータを共有しない、ディスク I/O 要件が高いステートフルアプリケーション (例:MySQL、Redis)

  • 高スループットのログ書き込み

  • Pod のライフサイクルから独立したデータの永続化

動的プロビジョニングの仕組み

StorageClass を参照する PVC を作成すると、Kubernetes は Alibaba Cloud ディスクをバックエンドとする永続ボリューム (PV) を自動的に作成し、バインドします。これにより、手動でのディスク作成が不要になり、ストレージインフラのオーバーヘッドが削減されます。

ACK Serverless クラスターには、デフォルトの StorageClass は含まれていません。ストレージをプロビジョニングする前に作成してください。

Kubernetes はデフォルトの StorageClass 機能をサポートしています。PVC が StorageClass を参照しない場合、Kubernetes はデフォルトの StorageClass を使用して PV をプロビジョニングします。Kubernetes のストレージの基本概念については、「ストレージの基本」をご参照ください。

前提条件

開始する前に、以下を確認してください。

ディスクボリュームのプロビジョニング

以下の手順を順番に実行します。

  1. StorageClass を作成して、ディスクタイプとプロビジョニングの動作を定義します。

  2. PVC を作成して、StorageClass からストレージを要求します。

  3. アプリケーションをデプロイし、PVC をマウントします。

ACK コンソール

ステップ 1: StorageClass の作成

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

  2. [クラスター] ページで、対象のクラスター名をクリックします。左側のペインで、[ボリューム] > [ストレージクラス] を選択します。

  3. [ストレージクラス] ページの右上隅にある [作成] をクリックします。

  4. [作成] ダイアログボックスで、パラメーターを設定します。

    特定の ECS インスタンスタイプは、ESSD またはエラスティック一時ディスクをサポートしていません。詳細については、「Elastic Block Storage に関するよくある質問」をご参照ください。
    パラメーター 必須 説明
    名前 はい StorageClass の名前。コンソールに表示されるフォーマット要件に従ってください。
    PV タイプ はい [クラウドディスク] を選択します。
    パラメーター はい type キーを使用してディスクカテゴリを指定します。デフォルト: cloud_essd。有効な値: cloud_essd (ESSD (エンタープライズ SSD))、cloud_regional_disk_auto (リージョン ESSD)、elastic_ephemeral_disk_premium (プレミアムエラスティック一時ディスク)、elastic_ephemeral_disk_standard (標準エラスティック一時ディスク)、cloud_ssd (標準 SSD)、cloud_efficiency (Ultra ディスク)。フォールバックカテゴリを指定するには、プリファレンスの順に複数の値を設定します (例:type: cloud_ssd,cloud_essd)。システムは各カテゴリを順番に試行し、ディスクが作成された時点で停止します。ディスク作成を 1 つ以上のゾーンに固定するには、zoneId パラメーターを追加します (例:シングルゾーンの場合は cn-beijing-a、マルチゾーンの場合は cn-beijing-a, cn-beijing-b)。
    リクレームポリシー はい PVC が削除されたときに PV およびディスクに対して実行される操作を制御します。デフォルト値: 削除(PV およびディスクが削除されます)。PV およびディスクを手動クリーンアップ用に保持するには、[保持] に設定します — データ損失のコストが高い場合に推奨されます。
    バインディングモード いいえ 即時デフォルト: (Pod がスケジューリングされる前にディスクが作成されます)。
  5. [作成] をクリックします。新しい StorageClass が [ストレージクラス] ページに表示されます。

ステップ 2: PVC の作成

  1. クラスター詳細ページの左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム要求] を選択します。

  2. [永続ボリューム要求] ページの右上隅にある [作成] をクリックします。

  3. [PVC の作成] ダイアログボックスで、パラメーターを設定します。

    パラメーター 必須 説明
    PVC タイプ はい [クラウドディスク] を選択します。
    名前 はい PVC の名前。名前空間内で一意である必要があります。
    割り当てモード はい [ストレージクラスを使用] を選択します。
    既存のストレージクラス はい [選択] をクリックし、ステップ 1 で作成した StorageClass を見つけ、[操作] 列の [選択] をクリックします。
    容量 はい 要求するストレージ容量。最小: 20 GiB。
    アクセスモード いいえ ReadWriteOnceデフォルト: (シングルノードでの読み取り/書き込み)。
  4. [作成] をクリックします。PVC が [永続ボリューム要求] ページに表示され、PV がバインドされます。

ステップ 3: アプリケーションのデプロイ

  1. クラスター詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [StatefulSet] を選択します。

  2. [StatefulSet] ページの右上隅にある [イメージから作成] をクリックします。

  3. アプリケーションを設定します。ボリュームを設定する際は、[クラウドストレージ] を選択し、手順 2 で作成した PVC をマウントします。この例では、ディスクボリュームが /tmp にマウントされています — /tmp に書き込まれたコンテナデータはディスクボリュームに保存されます。その他のアプリケーションのパラメーターについては、「StatefulSet を使用してステートフルアプリケーションを作成する」をご参照ください。

    volume

  4. [作成] をクリックします。アプリケーションがデプロイされ、永続ストレージとしてディスクボリュームを使用します。

kubectl

ステップ 1: StorageClass の作成

マルチゾーンクラスターでは、StorageClass は Pod をスケジューリングする前にプロビジョニングするディスクタイプを決定します。

  1. storage-class-csi.yaml という名前のファイルを以下の内容で作成します。

    パラメーター 必須 説明
    provisioner はい diskplugin.csi.alibabacloud.com に設定します。これは Alibaba Cloud ディスク CSI プロビジョナーを識別します。
    type はい ディスクカテゴリ。有効な値: cloud_auto (ESSD AutoPL ディスク)、cloud_essd (ESSD、デフォルト)、cloud_essd_entry (ESSD エントリーディスク)、cloud_ssd (標準 SSD)、cloud_efficiency (Ultra ディスク)、elastic_ephemeral_disk_standard (標準エラスティック一時ディスク)、elastic_ephemeral_disk_premium (プレミアムエラスティック一時ディスク)、cloud_regional_disk_auto (リージョン ESSD)。複数の値をカンマ区切りのフォールバックリストとして指定します。ディスク選択のガイダンスについては、「EBS の料金」、「ブロックストレージのパフォーマンス」、および「インスタンスファミリーの概要」をご参照ください。
    encrypted いいえ ディスクを暗号化するかどうか。デフォルト: false
    reclaimPolicy はい PVC が削除された際の PV とディスクの動作を制御します。Delete は両方を自動的に削除します。Retain は手動クリーンアップのために保持します。データ損失が大きな損害となる場合は Retain を使用してください。デフォルト: Delete
    allowVolumeExpansion いいえ オンラインでのディスク拡張を許可するには true に設定します。
    volumeBindingMode いいえ デフォルト: Immediate (Pod がスケジューリングされる前にディスクがプロビジョニングされます)。
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-ssd-b
    # Alibaba Cloud ディスクのプロビジョナーとして diskplugin.csi.alibabacloud.com を使用します。
    provisioner: diskplugin.csi.alibabacloud.com
    parameters:
      # ディスクカテゴリのフォールバック順: ESSD → 標準 SSD → Ultra ディスク。
      # システムは各値を順番に試行し、ディスクが作成された時点で停止します。
      type: cloud_essd,cloud_ssd,cloud_efficiency
      # オプション。ディスクを保存時に暗号化するには "true" に設定します。
      encrypted: "false"
    # Retain: PVC が削除されたときに PV とディスクを保持します (手動クリーンアップが必要)。
    # Delete: PVC が削除されたときに PV とディスクを自動的に削除します。
    reclaimPolicy: Retain
    # ダウンタイムなしでオンラインでのディスク拡張を許可します。
    allowVolumeExpansion: true
    # Immediate: Pod をスケジューリングする前にディスクをプロビジョニングします。
    volumeBindingMode: Immediate
  2. StorageClass を適用します。

    kubectl apply -f storage-class-csi.yaml
  3. ACK コンソールで StorageClass を確認します。ログインし、[クラスター] をクリックし、対象のクラスター名をクリックしてから、[ボリューム] > [ストレージクラス] を選択します。新しい StorageClass がリストに表示されます。

ステップ 2: PVC の作成

  1. pvc-ssd.yaml という名前のファイルを以下の内容で作成します。

    パラメーター 必須 説明
    name はい PVC の名前。
    accessModes はい プロビジョニングされた PV のアクセスモード。
    volumeMode いいえ ディスクがマウントされるフォーマット。Filesystem がサポートされています。
    storageClassName はい プロビジョニングに使用する StorageClass の名前。
    storage はい 要求するストレージ容量。最小: 20 GiB。
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 25Gi
      storageClassName: alicloud-disk-ssd-b
  2. PVC を作成します。

    kubectl create -f pvc-ssd.yaml
  3. ACK コンソールで PVC を確認します。クラスター詳細ページで、[ボリューム] > [永続ボリューム要求] を選択します。PVC がリストに表示され、PV がバインドされます。

ステップ 3: アプリケーションのデプロイ

  1. pvc-dynamic.yaml という名前のファイルを以下の内容で作成します。

    パラメーター 説明
    mountPath ディスクボリュームがマウントされるコンテナ内のパス。
    claimName マウントする PVC の名前。ステップ 2 で作成した PVC と一致する必要があります。
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx-dynamic
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: pvc-disk
              mountPath: /data    # ディスクがマウントされるコンテナ内のパス。
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: disk-pvc    # ステップ 2 で作成した PVC 名と一致する必要があります。
  2. アプリケーションをデプロイします。

    kubectl create -f pvc-dynamic.yaml
  3. ACK コンソールでデプロイメントを確認します。クラスター詳細ページで、[ワークロード] > [StatefulSet] を選択します。アプリケーションがリストに表示されます。

次のステップ