ECI实例默认提供20 GiB的免费存储空间,如果该存储空间大小无法满足您的需求,您可以自定义增加临时存储空间大小。本文介绍如何自定义设置临时存储空间大小。
背景信息
ECI实例默认的系统盘为40 GiB,其中20 GiB为系统需要占用的空间,您无法使用,剩余的20 GiB您可以免费使用。当您的存储需求大于20 GiB时,支持自定义增加临时存储空间大小。新增加的临时存储空间按照ESSD PL1类型的块存储按量价格进行计费。不同地域的价格可能不同,更多信息,请参见块存储定价页。
Kubernetes方式(添加annotations)
您可以添加annotations指定临时存储空间大小。对应的字段为:k8s.aliyun.com/eci-extra-ephemeral-storage。示例如下:
准备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
创建Pod。
kubectl apply -f extra-storage.yaml
查看临时存储空间是否生效。
查看临时存储空间大小。
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,则超出的部分即为临时存储空间大小。示例如下:
准备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的部分为临时存储空间
创建Pod。
kubectl apply -f emptyvolume.yaml
查看临时存储空间是否生效。
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'))