使用Deployment創(chuàng)建臨時存儲
臨時存儲可用于存儲緩存等臨時數(shù)據(jù),在創(chuàng)建Deployment時,您可以通過PVC模板VolumeClaimTemplate
為每個Pod自動創(chuàng)建臨時存儲,在刪除和減少Pod時自動刪除之前創(chuàng)建的PVC和PV。本文介紹如何使用Deployment創(chuàng)建臨時存儲以及驗證存儲會隨著Pod的縮容而被刪除。
前提條件
已創(chuàng)建ACK集群,且集群為1.22及以上版本。具體操作,請參見創(chuàng)建Kubernetes托管版集群。
該功能暫不支持ACK Serverless集群。
使用場景
應用需要臨時存儲來保存應用中間數(shù)據(jù),但無需持久化。
應用寫日志,日志吞吐量很大,使用臨時非共享存儲可以保證存儲性能。
創(chuàng)建Deployment臨時存儲
創(chuàng)建無狀態(tài)服務Deployment時,您可以通過VolumeClaimTemplate
自動創(chuàng)建PVC和PV。VolumeClaimTemplate
表示一類PVC的模板,系統(tǒng)會根據(jù)無狀態(tài)服務Deployment配置的replicas數(shù)量,創(chuàng)建相應數(shù)量的PVC,這些PVC除了名稱不一樣,其他配置均相同。
使用以下示例代碼創(chuàng)建無狀態(tài)服務Deployment ,并且該Deployment包含2個Pod。
該使用方式對于Deployment、StatefulSet、Pod均適用。
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
參數(shù)
說明
replicas
本示例設置為2,表示創(chuàng)建2個Pod。
volumeMounts.mountPath
云盤在容器中掛載的位置。
accessModes
訪問模式。
ephemeral
聲明當前存儲為臨時存儲。
storageClassName
本示例配置為alicloud-disk-topology-alltype,表示依次嘗試使用cloud_essd、cloud_ssd、cloud_efficiency類型的云盤。
執(zhí)行以下命令,部署Deployment服務。
kubectl create -f ephemeral-example.yaml
執(zhí)行以下命令,查看已部署的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
執(zhí)行以下命令,查看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的縮容而刪除
執(zhí)行以下命令,縮容Pod為1。
kubectl scale deploy ephemeral-example --replicas=1 deployment.apps/ephemeral-example scaled
執(zhí)行以下命令,查看Pod的數(shù)量。
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
執(zhí)行以下命令,查看PVC的數(shù)量。
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的縮容而被刪除。
相關文檔
如需監(jiān)控臨時存儲的使用情況,請參見使用storage-operator組件監(jiān)控集群側存儲資源。
關于云盤的持久化存儲,請參見云盤存儲卷。