全部產品
Search
文件中心

Container Service for Kubernetes:使用Deployment建立臨時儲存

更新時間:Jun 19, 2024

臨時儲存可用於儲存緩衝等臨時資料,在建立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除了名稱不一樣,其他配置均相同。

  1. 使用以下範例程式碼建立無狀態服務Deployment ,並且該Deployment包含2個Pod。

    該使用方式對於Deployment、StatefulSet、Pod均適用。

    展開查看建立無狀態服務Deployment的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

    參數

    說明

    replicas

    本樣本設定為2,表示建立2個Pod。

    volumeMounts.mountPath

    雲端硬碟在容器中掛載的位置。

    accessModes

    訪問模式。

    ephemeral

    聲明當前儲存為臨時儲存。

    storageClassName

    本樣本配置為alicloud-disk-topology-alltype,表示依次嘗試使用cloud_essd、cloud_ssd、cloud_efficiency類型的雲端硬碟。

  2. 執行以下命令,部署Deployment服務。

    kubectl create -f ephemeral-example.yaml
  3. 執行以下命令,查看已部署的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
  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會隨著Pod的縮容而刪除

  1. 執行以下命令,縮容Pod為1。

    kubectl scale deploy ephemeral-example --replicas=1
    deployment.apps/ephemeral-example scaled
  2. 執行以下命令,查看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
  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隨著Pod的縮容而被刪除。

相關文檔