臨時儲存可用於儲存緩衝等臨時資料,在建立Deployment時,您可以通過PVC模板VolumeClaimTemplate
為每個Pod自動建立臨時儲存,在刪除和減少Pod時自動刪除之前建立的PVC和PV。本文介紹如何使用Deployment建立臨時儲存以及驗證儲存會隨著Pod的縮容而被刪除。
前提條件
已建立ACK叢集,且叢集為1.22及以上版本。具體操作,請參見建立Kubernetes託管版叢集。
該功能暫不支援ACK Serverless叢集。
使用情境
應用需要臨時儲存來儲存應用中間資料,但無需持久化。
應用寫日誌,日誌輸送量很大,使用臨時非共用儲存可以保證儲存效能。
建立Deployment臨時儲存
建立無狀態服務Deployment時,您可以通過VolumeClaimTemplate
自動建立PVC和PV。VolumeClaimTemplate
表示一類PVC的模板,系統會根據無狀態服務Deployment配置的replicas數量,建立相應數量的PVC,這些PVC除了名稱不一樣,其他配置均相同。
使用以下範例程式碼建立無狀態服務Deployment ,並且該Deployment包含2個Pod。
該使用方式對於Deployment、StatefulSet、Pod均適用。
參數
說明
replicas
本樣本設定為2,表示建立2個Pod。
volumeMounts.mountPath
雲端硬碟在容器中掛載的位置。
accessModes
訪問模式。
ephemeral
聲明當前儲存為臨時儲存。
storageClassName
本樣本配置為alicloud-disk-topology-alltype,表示依次嘗試使用cloud_essd、cloud_ssd、cloud_efficiency類型的雲端硬碟。
執行以下命令,部署Deployment服務。
kubectl create -f ephemeral-example.yaml
執行以下命令,查看已部署的Pod。
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
執行以下命令,查看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會隨著Pod的縮容而刪除
執行以下命令,縮容Pod為1。
kubectl scale deploy ephemeral-example --replicas=1 deployment.apps/ephemeral-example scaled
執行以下命令,查看Pod的數量。
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
執行以下命令,查看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隨著Pod的縮容而被刪除。
相關文檔
如需監控臨時儲存的使用方式,請參見使用storage-operator組件監控叢集側儲存資源。
關於雲端硬碟的持久化儲存,請參見雲端硬碟儲存卷。