阿里云首页 弹性容器实例

自定义临时存储空间大小

ECI实例默认提供20 GiB的免费存储空间,如果该存储空间大小无法满足您的需求,您可以自定义增加临时存储空间大小。本文介绍如何自定义设置临时存储空间大小。

背景信息

ECI实例默认的系统盘为40 GiB,其中20 GiB为系统需要占用的空间,您无法使用,剩余的20 GiB您可以免费使用。当您的存储需求大于20 GiB时,支持自定义增加临时存储空间大小。新增加的临时存储空间按照ESSD PL1类型的块存储按量价格进行计费。不同地域的价格可能不同,更多信息,请参见块存储定价页

Kubernetes方式

Kubernetes场景下,支持通过以下方式自定义设置临时存储空间大小:

  • 方式一:添加annotation

    添加annotations可以指定临时存储空间大小,对应的字段为k8s.aliyun.com/eci-extra-ephemeral-storage,设置的值即为增加的临时存储空间大小。

  • 方式二:设置emptyDir

    自定义设置emptyDir Volume可以增加临时存储空间。如果使用的emptyDir Volume大小不超出20 GiB,则不会增加临时存储空间;如果超出了20 GiB,则超出的部分即为临时存储空间大小。

  • 方式三:设置容器的resource
    在容器的resource中可以声明ephemeral-storage相关request,如果声明的ephemeral-storage大小不超出20 GiB,则不会增加临时存储空间;如果超出了20 GiB,则超出的部分即为临时存储空间大小。
说明

三种方式均可以设置临时存储空间大小,但是语义有所差异:

  • 方式一为limit语义,创建的临时存储空间大小是准确的。

  • 方式二和方式三为request语义,创建临时存储空间时,可能还需要考虑镜像缓存因素,即实际创建的临时存储空间大小可能和request声明的不一致。

配置示例如下:

  1. 准备YAML文件。

    假设YAML文件命名为extra-storage.yaml,三种方式对应的YAML文件内容示例如下:

    • 示例一:添加annotation

      apiVersion: v1
      kind: Pod
      metadata:
        name: test
        annotations:
          k8s.aliyun.com/eci-extra-ephemeral-storage: "30Gi"  #自定义设置临时存储空间大小
      spec:
        containers:
        - name: nginx
          image: nginx:latest
          imagePullPolicy: IfNotPresent
        restartPolicy: Always
    • 示例二:设置emptyDir

      apiVersion: v1
      kind: Pod
      metadata:
        name: test
      spec:
        containers:
        - image: nginx:latest
          name: nginx
          volumeMounts:
          - mountPath: /extra-storage
            name: cache-volume
        volumes:
        - name: cache-volume
          emptyDir: {"sizeLimit": "50Gi"}    #自定义设置emptyDir Volume的大小,超出20 GiB的部分为临时存储空间
    • 示例三:设置容器的resource

      apiVersion: v1
      kind: Pod
      metadata:
        name: test
      spec:
        containers:
        - name: nginx
          image: nginx:latest
          imagePullPolicy: IfNotPresent
          resources: 
            requests: {"ephemeral-storage": "50Gi"}  #在容器中的resource中,声明ephemeral-storage相关request,超出20 GiB的部分为临时存储空间
  2. 创建Pod。

    kubectl apply -f extra-storage.yaml
  3. 查看临时存储空间是否生效。

    • 查看临时存储空间大小。

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

      返回结果如下,已增加30 GiB的临时存储空间。

      k8s.aliyun.com/eci-extra-ephemeral-storage: 30Gi
    • 通过exec命令查看容器的文件系统分区是否扩容成功。

      kubectl exec -it test -- sh
      df -h

      返回结果如下,存储空间总共约70 GiB,其中20 GiB为系统需要占用的空间,实际可用空间为临时存储空间30 GiB加上默认可用的20 GiB,约50 GiB。

      Filesystem      Size  Used Avail Use% Mounted on
      overlay          69G  4.7G   61G   8% /
      tmpfs            64M     0   64M   0% /dev
      tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
      /dev/root        69G  4.7G   61G   8% /etc/hosts
      shm              64M     0   64M   0% /dev/shm
      tmpfs           1.9G   12K  1.9G   1% /run/secrets/kubernetes.io/serviceaccount
      tmpfs           1.9G     0  1.9G   0% /proc/acpi
      tmpfs           1.9G     0  1.9G   0% /sys/firmware

OpenAPI方式

调用CreateContainerGroup接口创建ECI实例时,您可以通过EphemeralStorage参数来设置临时存储空间大小。EphemeralStorage的参数说明如下表所示。更多信息,请参见CreateContainerGroup

名称

类型

是否必选

示例值

描述

EphemeralStorage

Integer

50

临时存储空间大小。单位:GiB。

如果您使用SDK,Python SDK的示例如下:

#!/usr/bin/env python
#coding=utf-8

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkeci.request.v20180808.CreateContainerGroupRequest import CreateContainerGroupRequest

client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')

request = CreateContainerGroupRequest()
request.set_accept_format('json')

request.set_SecurityGroupId("sg-uf6biempwqvodk7*****")
request.set_VSwitchId("vsw-uf6mhqg2wiq9iifhn*****")
request.set_ContainerGroupName("test")
request.set_Containers([
  {
    "Image": "nginx",
    "Name": "nginx"
  }
])
request.set_EphemeralStorage(50) # 自定义设置临时存储空间大小

response = client.do_action_with_exception(request)
# python2:  print(response) 
print(str(response, encoding='utf-8'))
首页 弹性容器实例 存储 自定义临时存储空间大小