全部產品
Search
文件中心

Elastic Container Instance:增加臨時儲存空間大小

更新時間:Jul 06, 2024

ECI Pod(即ECI執行個體)預設提供30 GiB的免費的臨時儲存空間,如果該儲存空間大小無法滿足您的需求,您可以自訂增加臨時儲存空間大小。

背景資訊

每個ECI執行個體預設提供30 GiB的臨時儲存空間(免費),如下圖所示。

臨時儲存空間

重要

ECI執行個體啟動所使用的容器鏡像會佔用該30 GiB空間。容器鏡像需要佔用的空間大小至少為容器鏡像大小*2,具體大小視鏡像的壓縮率決定。

如果您的儲存需求大於30 GiB,可以自訂增加臨時儲存空間大小。新增加的臨時儲存空間會按容量大小和使用時間長度收取費用。更多資訊,請參見臨時儲存空間計費

配置說明

Kubernetes情境下,支援通過以下方式自訂增加臨時儲存空間大小:

    說明

    兩種方式均可以設定臨時儲存空間大小,但是語義有所差異:

    • 方式一為limit語義,建立的臨時儲存空間大小是準確的。

    • 方式二為request語義,建立臨時儲存空間時,可能還需要考慮鏡像緩衝因素,即實際建立的臨時儲存空間大小可能和request聲明的不一致。更多資訊,請參見臨時儲存空間與鏡像緩衝的關係

    如果同時使用兩種方式,則取兩者配置的較大值生效。

方式一:添加Annotation

在ECI Pod添加k8s.aliyun.com/eci-extra-ephemeral-storage的Annotation可以為其增加臨時儲存空間大小,設定的值即為增加的臨時儲存空間大小。

重要
  • Annotation請添加在Pod的metadata下,例如:建立Deployment時,Annotation需添加在spec>template>metadata下。

  • 僅支援在建立ECI Pod時添加ECI相關Annotation來生效ECI功能,更新ECI Pod時添加或者修改ECI相關Annotation均不會生效。

方式二:設定容器的resource

在容器的resource中可以聲明ephemeral-storage相關request,如果聲明的ephemeral-storage大小不超30 GiB,則不會增加臨時儲存空間;如果超出了30 GiB,則超出的部分即為增加的臨時儲存空間大小。

配置樣本

  1. 準備YAML檔案。

    假設您要建立的ECI Pod需要增加20 GiB的臨時儲存空間,對應的YAML檔案命名為extra-storage.yaml,YAML樣本如下:

    • 樣本一:添加Annotation

      apiVersion: v1
      kind: Pod
      metadata:
        name: test
        annotations:
          k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"  # 自訂設定要增加的臨時儲存空間大小
      spec:
        containers:
        - name: nginx
          image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
          imagePullPolicy: IfNotPresent
        restartPolicy: Always
    • 樣本二:設定容器的resource

      apiVersion: v1
      kind: Pod
      metadata:
        name: test
      spec:
        containers:
        - name: nginx
          image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
          imagePullPolicy: IfNotPresent
          resources: 
            requests: 
              ephemeral-storage: 50Gi   # 超出30 GiB的部分為增加的臨時儲存空間
        restartPolicy: Always
  2. 建立Pod。

    kubectl apply -f extra-storage.yaml
  3. 查看臨時儲存空間是否生效。

    • 查看增加的臨時儲存空間大小。

      kubectl describe pod test | grep k8s.aliyun.com/eci-extra-ephemeral-storage

      返回結果如下,已增加20 GiB的臨時儲存空間。

      k8s.aliyun.com/eci-extra-ephemeral-storage: 20Gi
    • 通過exec命令進入容器,然後執行df -h命令查看容器的檔案系統分區是否擴容成功。

      kubectl exec -it test -- sh
      df -h

      返回結果如下,實際可用空間(overlay )為增加的20 GiB加上預設可用的30 GiB,共50 GiB。

      Filesystem      Size  Used Avail Use% Mounted on
      overlay          50G  2.1G   48G   5% /
      tmpfs            64M     0   64M   0% /dev
      tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
      /dev/vda4        50G  2.1G   48G   5% /etc/hosts
      shm              64M     0   64M   0% /dev/shm
      tmpfs           4.0G   12K  4.0G   1% /run/secrets/kubernetes.io/serviceaccount
      tmpfs           1.9G     0  1.9G   0% /proc/acpi
      tmpfs           1.9G     0  1.9G   0% /sys/firmware

臨時儲存空間與鏡像緩衝的關係

根據鏡像緩衝的建立方式的不同,產生的臨時儲存空間存在差異。

  • 手動建立的鏡像緩衝基於資料盤實現。建立ECI執行個體時,如果使用的鏡像緩衝為手動建立的(名稱自訂),則臨時儲存空間會在資料盤。此時,資料盤分區(/dev/disk/by-uuid/****)大小即為臨時儲存空間大小,系統硬碟分區(/dev/vda4)大小保持預設的30 GiB,且不會被使用。如下圖所示。

    臨時儲存空間-手動imc

  • 自動建立的鏡像緩衝基於系統硬碟實現。建立ECI執行個體時,如果使用的鏡像緩衝為自動建立的(名稱格式為auto-create-for-執行個體ID),則臨時儲存空間會在系統硬碟。此時,系統硬碟分區(/dev/vda4)大小即為臨時儲存空間大小,如下圖所示。

    臨時儲存空間-自動imc