全部产品
Search
文档中心

自定义临时存储空间大小

更新时间: 2021-04-08

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

背景信息

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

Kubernetes方式(添加annotations)

您可以添加annotations指定临时存储空间大小。对应的字段为:k8s.aliyun.com/eci-extra-ephemeral-storage。示例如下:

  1. 准备yaml文件,添加annotations设置临时存储空间。

    假设yaml文件命名为extra-storage.yaml,内容如下:

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

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

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

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

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

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

      kubectl exec -it test -- sh
      df -h

      返回结果如下,实际可用空间为临时存储空间50 GiB加上默认可用的20 GiB,约70 GiB。

      Filesystem      Size  Used Avail Use% Mounted on
      overlay          88G  3.4G   81G   4% /
      tmpfs            64M     0   64M   0% /dev
      tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
      /dev/root        88G  3.4G   81G   4% /etc/hosts
      shm              64M     0   64M   0% /dev/shm
      tmpfs           2.0G   12K  2.0G   1% /run/secrets/kubernetes.io/serviceaccount
      tmpfs           2.0G     0  2.0G   0% /proc/acpi
      tmpfs           2.0G     0  2.0G   0% /sys/firmware

Kubernetes方式(自定义emptyDir)

您可以通过自定义emptyDir Volume的方式来增加临时存储空间,满足存储需求。如果您使用的emptyDir Volume大小不超出20 GiB,不会增加临时存储空间。如果超出了20 GiB,则超出的部分即为临时存储空间大小。示例如下:

  1. 准备yaml文件,声明emptyDir Volume的大小。

    假设yaml文件命名为emptyvolume.yaml,内容如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pd
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        volumeMounts:
        - mountPath: /extra-storage
          name: cache-volume
      volumes:
      - name: cache-volume
        emptyDir: {"sizeLimit": "30Gi"}    #自定义emptyDir Volume的大小,超出20 GiB的部分为临时存储空间
  2. 创建Pod。

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

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

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

    k8s.aliyun.com/eci-extra-ephemeral-storage: 10Gi

OpenAPI方式

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

名称

类型

是否必选

示例值

描述

EphemeralStorage

Integer

50

临时存储空间大小,按ESSD PL1类型的云盘进行收费。单位: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'))