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

Container Service for Kubernetes:デプロイメントを使用したエフェメラルボリュームの作成

最終更新日:Dec 11, 2024

一時ボリュームは、キャッシュデータなどの一時データを格納するために使用できます。 展開を作成するときに、永続ボリューム要求 (PVC) テンプレートVolumeClaimTemplateを使用して、各ポッドの一時的なボリュームを作成できます。 このPVCテンプレートを使用して作成されたPVCおよび永続ボリューム (PV) は、それらを使用するポッドとともに自動的に削除できます。 このトピックでは、デプロイメントを使用してエフェメラルボリュームを作成する方法と、エフェメラルボリュームをポッドと一緒に削除できることを確認する方法について説明します。

前提条件

Kubernetes 1.22以降を実行するContainer Service for Kubernetes (ACK) クラスターが作成されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。

説明

デプロイメントを使用して、ACKサーバーレスクラスターの一時的なボリュームを作成することはできません。

適用シナリオ

  • アプリケーションは、一時的なデータを保存するために一時的なボリュームを使用します。

  • アプリケーションは通常、大量のログデータを生成します。 一時的な排他的ボリュームを使用して、ログデータを保存できます。

デプロイメントを使用したエフェメラルボリュームの作成

デプロイを作成するときに、VolumeClaimTemplateを使用して自動的にPVCとPVCを作成できます。 VolumeClaimTemplateはPVCテンプレートです。 このテンプレートを使用してシステムが作成するPVCの数は、デプロイで指定されたレプリケートされたポッドの数と同じです。 PVCは同じ構成を使用しますが、名前が異なります。

  1. 次のコードブロックを使用して、2つのポッドをデプロイするDeploymentを作成します。

    デプロイメントに加えて、StatefulSetsおよびポッドYAMLファイルを使用してエフェメラルボリュームを作成することもできます。

    クリックしてデプロイのYAMLコンテンツを表示

    allowVolumeExpansion: true
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      creationTimestamp: "2023-07-19T06:54:25Z"
      name: alicloud-disk-topology-alltype
      resourceVersion: "773847"
      uid: 5a9f8e3b-d22e-483d-a3bf-90ff8d466492
    parameters:
      type: cloud_essd,cloud_ssd,cloud_efficiency
    provisioner: diskplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    ---
    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: busybox-container
              image: busybox
              resources:
                requests:
                  cpu: 500m
                  memory: 2Gi
                  ephemeral-storage: 2Gi
              volumeMounts:
              - mountPath: "/scratch"
                name: scratch-volume
              command: [ "sleep", "1000000" ]
          volumes:
            - name: scratch-volume
              ephemeral:
                volumeClaimTemplate:
                  metadata:
                    labels:
                      type: scratch-volume
                  spec:
                    accessModes: [ "ReadWriteOnce" ]
                    storageClassName: alicloud-disk-topology-alltype
                    resources:
                      requests:
                        storage: 30Gi

    パラメーター

    説明

    レプリカ

    この例では、2つのレプリケートポッドが作成されます。

    volumeMounts.mo untPath

    ディスクボリュームがマウントされるコンテナーパス。

    accessModes

    アクセスモード。

    一時的な

    ボリュームタイプを短命に設定します。

    storageClassName

    この例では、パラメーターはalicloud-disk-topology-alltypeに設定されています。 システムは、cloud_essd、cloud_ssd、およびcloud_efficiencyのディスクタイプに基づいてボリュームを作成しようとします。

  2. 次のコマンドを実行して、展開を展開します。

    kubectl create -f ephemeral-example.yaml
  3. 次のコマンドを実行してポッドを照会します。

    kubectl get pod

    期待される出力:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-65d6c5fb87-5jbjf   1/1     Running   0          4m55s
    ephemeral-example-65d6c5fb87-jgt8x   1/1     Running   0          4m55s
  4. 次のコマンドを実行してPVCを照会します。

    kubectl get pvc

    期待される出力:

    NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     AGE
    ephemeral-example-65d6c5fb87-5jbjf-scratch-volume   Bound    d-2ze7cjui6henh7z61393   30Gi       RWO            alicloud-disk-topology-alltype   5m42s
    ephemeral-example-65d6c5fb87-jgt8x-scratch-volume   Bound    d-2zehi4gnz4btacaf8lh2   30Gi       RWO            alicloud-disk-topology-alltype   5m42s

PvcとPVがポッドと一緒に削除されることを確認します

  1. 次のコマンドを実行して、ポッドの数を1にスケーリングします。

    kubectl scale deploy ephemeral-example --replicas=1
    deployment.apps/ephemeral-example scaled
  2. 次のコマンドを実行して、ポッドの数を照会します。

    kubectl get pod

    期待される出力:

    NAME                                 READY   STATUS        RESTARTS   AGE
    ephemeral-example-65d6c5fb87-5jbjf   1/1     Terminating   0          7m13s
    ephemeral-example-65d6c5fb87-jgt8x   1/1     Running       0          7m13s
  3. 次のコマンドを実行して、PVCの数を照会します。

    kubectl get pvc

    期待される出力:

    NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     AGE
    ephemeral-example-65d6c5fb87-jgt8x-scratch-volume   Bound    d-2zehi4gnz4btacaf8lh2   30Gi       RWO            alicloud-disk-topology-alltype   8m1s

    出力は、PVCがポッドとともに削除されることを示します。

関連ドキュメント