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

Container Service for Kubernetes:ディスクを一時ボリュームとして使用する

最終更新日:Nov 09, 2025

アプリケーションで追加のストレージが必要であるが、永続ストレージは必要ない場合は、エフェメラルボリュームを Pod にマウントできます。これらのボリュームは対応する Pod と共に作成および削除されるため、アプリケーションのデプロイメントと管理が簡素化されます。このトピックでは、ディスクをエフェメラルボリュームとして使用し、ephemeral.volumeClaimTemplate を使用してボリュームを Pod にマウントし、Pod が削除されたときに永続ボリューム (PV) と永続ボリューム要求 (PVC) が自動的に削除されることを確認する方法について説明します。

シナリオ

このメソッドは、次のようなエフェメラルストレージを必要とするシナリオに適しています。

  • アプリケーションは中間データを保存するためにエフェメラルストレージを必要としますが、データの永続性は必要ありません。

  • アプリケーションは高スループットでログを出力します。一時的な非共有ストレージを使用すると、ストレージパフォーマンスを確保できます。

前提条件

バージョン 1.22 以降を実行する ACK クラスターが作成されていること。

デプロイメントの作成とエフェメラルボリュームのマウント

デプロイメントを作成するときに、VolumeClaimTemplate を使用して PVC と PV を自動的に作成できます。VolumeClaimTemplate は PVC を定義するテンプレートです。システムは、デプロイメント構成で指定されたレプリカ数に基づいて、多数の PVC を作成します。これらの PVC は、名前を除いて同じ構成を共有します。

説明

ephemeral.volumeClaimTemplate を使用して、デプロイメント、StatefulSet、および Pod にエフェメラルボリュームをマウントできます。このトピックでは、デプロイメントを例として使用します。

  1. 表のパラメーターの説明に基づいて、次の YAML コンテンツを変更します。コンテンツを ephemeral-example.yaml として保存します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ephemeral-example
    spec:
      replicas: 2
      selector:
        matchLabels:
          pod: example-pod
      strategy:
        type: Recreate      
      template:
        metadata:
          labels:
            pod: example-pod
        spec:
          containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              resources:
                requests:
                  cpu: 500m
                  memory: 2Gi
                  ephemeral-storage: 2Gi
              volumeMounts:
              - mountPath: "/scratch"
                name: scratch-volume
          volumes:
            - name: scratch-volume
              ephemeral:      # Declare the current storage as ephemeral storage
                volumeClaimTemplate:
                  spec:
                    accessModes: [ "ReadWriteOncePod" ]
                    storageClassName: alicloud-disk-topology-alltype
                    resources:
                      requests:
                        storage: 30Gi

    次の表に、volumeClaimTemplate のパラメーターを示します。

    パラメーター

    説明

    accessModes

    永続ボリュームのアクセスモード。このパラメーターは ReadWriteOncePod または ReadWriteOnce に設定できます。

    クラスターのバージョンが 1.29 以降の場合は、ReadWriteOncePod を使用します。これにより、ディスクが 1 つの Pod のみで使用されるようになります。

    storageClassName

    使用する StorageClass の名前。

    この例では、ACK が提供するデフォルトの StorageClass である alicloud-disk-topology-alltype を使用します。この StorageClass は、ディスクボリュームの構成を定義します。エンタープライズ SSD (ESSD)、標準 SSD、Ultra ディスクの順にディスクを作成しようとします。

    説明

    ディスクは従量課金で課金されます。詳細については、「Elastic Block Storage の課金」および「Elastic Block Storage の料金」をご参照ください。

    storage

    一時ボリュームの容量。

    説明

    この例で使用されている StorageClass (alicloud-disk-topology-alltype) は、デフォルトで PL1 ESSD を作成します。最小容量は 20 GiB です。

  2. ephemeral-example.yaml ファイルを使用してデプロイメントを作成します。

    kubectl create -f ephemeral-example.yaml
  3. Pod のデプロイメントステータスを確認します。

    kubectl get pod -l pod=example-pod

    予想される出力:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-7f795798f9-kbplx   1/1     Running   0          38s
    ephemeral-example-7f795798f9-p98lt   1/1     Running   0          38s
  4. PVC を確認します。

    kubectl get pvc

    次の出力が期待されます。Pod に対応する PVC と PV が自動的に作成されます。ディスク ID は VOLUME フィールドにあります。

    NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
    ephemeral-example-7f795798f9-kbplx-scratch-volume   Bound    d-uf61678cuo33eunn****   30Gi       RWOP           alicloud-disk-topology-alltype   <unset>                 74s
    ephemeral-example-7f795798f9-p98lt-scratch-volume   Bound    d-uf6dwkdcowyf2fj6****   30Gi       RWOP           alicloud-disk-topology-alltype   <unset>                 74s

Pod のスケールイン時に PV と PVC が削除されることの確認

前のセクションで説明したようにデプロイメントを作成すると、ディスクはエフェメラルボリュームとして各 Pod に自動的にマウントされます。これらのボリュームは、対応する Pod が削除されると自動的に削除されます。次の例では、この動作を確認する方法を示します。

  1. デプロイメントのレプリカ数を減らします。

    次のコマンドは、デプロイメントのレプリカ数を 1 に減らします。

    kubectl scale deploy ephemeral-example --replicas=1
  2. Pod を確認して、スケールインが完了したことを確認します。

    kubectl get pod -l pod=example-pod

    予想される出力:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-7f795798f9-kbplx   1/1     Running   0          5m29s
  3. PV と PVC を確認して、削除された Pod のリソースも削除されていることを確認します。

    1. PV を確認します。

      kubectl get pv

      次の出力が期待されます。削除された Pod の PV も削除されます。

      NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                       STORAGECLASS                     VOLUMEATTRIBUTESCLASS   REASON   AGE
      d-uf61678cuo33eunn****   30Gi       RWOP           Delete           Bound    default/ephemeral-example-7f795798f9-kbplx-scratch-volume   alicloud-disk-topology-alltype   <unset>                          5m52s
    2. PVC を確認します。

      kubectl get pvc

      次の出力が期待されます。削除された Pod の PVC も削除されます。

      NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
      ephemeral-example-7f795798f9-kbplx-scratch-volume   Bound    d-uf61678cuo33eunn****   30Gi       RWOP           alicloud-disk-topology-alltype   <unset>                 7m11s

関連情報