アプリケーションで追加のストレージが必要であるが、永続ストレージは必要ない場合は、エフェメラルボリュームを Pod にマウントできます。これらのボリュームは対応する Pod と共に作成および削除されるため、アプリケーションのデプロイメントと管理が簡素化されます。このトピックでは、ディスクをエフェメラルボリュームとして使用し、ephemeral.volumeClaimTemplate を使用してボリュームを Pod にマウントし、Pod が削除されたときに永続ボリューム (PV) と永続ボリューム要求 (PVC) が自動的に削除されることを確認する方法について説明します。
シナリオ
このメソッドは、次のようなエフェメラルストレージを必要とするシナリオに適しています。
アプリケーションは中間データを保存するためにエフェメラルストレージを必要としますが、データの永続性は必要ありません。
アプリケーションは高スループットでログを出力します。一時的な非共有ストレージを使用すると、ストレージパフォーマンスを確保できます。
前提条件
バージョン 1.22 以降を実行する ACK クラスターが作成されていること。
デプロイメントの作成とエフェメラルボリュームのマウント
デプロイメントを作成するときに、VolumeClaimTemplate を使用して PVC と PV を自動的に作成できます。VolumeClaimTemplate は PVC を定義するテンプレートです。システムは、デプロイメント構成で指定されたレプリカ数に基づいて、多数の PVC を作成します。これらの PVC は、名前を除いて同じ構成を共有します。
ephemeral.volumeClaimTemplate を使用して、デプロイメント、StatefulSet、および Pod にエフェメラルボリュームをマウントできます。このトピックでは、デプロイメントを例として使用します。
表のパラメーターの説明に基づいて、次の 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 です。ephemeral-example.yaml ファイルを使用してデプロイメントを作成します。
kubectl create -f ephemeral-example.yamlPod のデプロイメントステータスを確認します。
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 38sPVC を確認します。
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 に減らします。
kubectl scale deploy ephemeral-example --replicas=1Pod を確認して、スケールインが完了したことを確認します。
kubectl get pod -l pod=example-pod予想される出力:
NAME READY STATUS RESTARTS AGE ephemeral-example-7f795798f9-kbplx 1/1 Running 0 5m29sPV と PVC を確認して、削除された Pod のリソースも削除されていることを確認します。
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> 5m52sPVC を確認します。
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
関連情報
エフェメラルストレージの使用状況をモニターする方法の詳細については、「エフェメラルストレージのモニタリング」をご参照ください。
永続ストレージにディスクを使用する方法の詳細については、「ディスクボリューム」をご参照ください。