指定vCPU和内存创建Pod
大部分场景下,如果没有特殊的规格需求(如GPU、本地盘等),推荐您指定vCPU和内存来创建ECI Pod(即ECI实例),系统会尝试使用多种ECS规格进行支撑,以提供比ECS单规格更好的弹性和资源供应能力。
规格说明
创建ECI实例时,如果指定的vCPU和内存不符合要求,系统将自动按照ECI支持的规格进行规整。规整时将向最接近的ECI规格进行规整,同时需满足指定的vCPU和内存≤ECI规格的vCPU和内存。例如:创建ECI实例时,声明了7 vCPU,13 GiB内存,则实际创建的ECI实例为8 vCPU,16 GiB内存。
ECI支持的规格如下表所示。
目前仅支持一块弹性网卡,暂不支持多网卡能力。
如果未指定vCPU和内存规格,系统默认采用2 vCPU和4 GiB内存的规格创建ECI实例。
vCPU | 内存(GiB) | emptyDir空间大小(GiB) | 网络带宽能力(出+入)(Gbit/s)(理论上限值) | 网络收发包能力(出+入)(万PPS)(理论上限值) | 网卡多队列 |
0.25 | 0.5、1 | 30 | 0.08 | 4 | 1 |
0.5 | 1、2 | 30 | 0.08 | 5 | 1 |
1 | 2、4、8 | 30 | 0.1 | 5 | 1 |
2 | 1、2、4、8、16 | 30 | 1 | 30 | 2 |
4 | 2、4、8、16、32 | 30 | 1.5 | 50 | 2 |
8 | 4、8、16、32、64 | 30 | 2 | 80 | 4 |
12 | 12、24、48、96 | 30 | 2.5 | 90 | 4 |
16 | 16、32、64 、128 | 30 | 3 | 100 | 4 |
24 | 24、48、96、192 | 30 | 4.5 | 150 | 6 |
32 | 32、64、128、256 | 30 | 6 | 200 | 8 |
52 | 96、192、384 | 30 | 12.5 | 300 | 32 |
56 | 224 | 30 | 10 | 450 | 14 |
64 | 128、256、512 | 30 | 20 | 400 | 16 |
配置说明
指定vCPU和内存创建ECI Pod时,支持以下两种:
指定Pod内容器的vCPU和内存:通过定义Containers的limits或requests来指定,建议使用limits。
指定Pod级别的vCPU和内存:通过在Pod metadata中添加
k8s.aliyun.com/eci-use-specs
的Annotation来指定。
如果您没有指定,或者同时指定了limits、requests和eci-use-specs,实际生效情况如下:
场景 | Pod规格 |
全部未指定 | 按默认规格(2vCPU,4 GiB内存) |
仅指定limits | 汇总limits |
仅指定requests | 汇总requests |
同时指定limits和requests | 分别汇总limits和requests,按两者中较大值 |
仅指定eci-use-specs | 按eci-use-specs的值 |
指定limits或requests的同时指定eci-use-specs | 按eci-use-specs的值 |
如果汇总limits、requests后的规格,或者eci-use-specs指定的规格不满足ECI规格要求,系统会自动进行资源规整,并按规整后的规格进行计费。
指定Pod内容器的vCPU和内存
该方式为Kubernetes默认方式。每个ECI Pod最多可以支持20个容器,每个容器的vCPU和内存规格可以自定义配置,但汇总到Pod级别时需满足ECI Pod的vCPU和内存约束。
ECI支持为特定容器(例如Sidecar容器)设置环境变量,实现在资源规整时忽略该容器,避免资源浪费。更多信息,请参见配置资源规整时忽略特定容器。
您可以直接定义Container的limits来指定该容器的vCPU和内存。配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
resources:
limits:
cpu: "500m" #指定nginx容器的vCPU为0.5 vCPU
memory: "1024Mi" #指定nginx容器的内存为1 GiB
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "1000m" #指定busybox容器的vCPU为1 vCPU
memory: "2048Mi" #指定busybox容器的内存为2 GiB
指定ECI Pod的vCPU和内存
该方式下,系统会尝试使用多种ECS规格进行支撑,以实现更好的弹性和资源供应能力。
如果您对规格有一定要求,例如只想使用6代ECS规格,可添加Annotation来指定ECS规格代数。更多信息,请参见指定ECS规格代数创建Pod。
该方式还具备以下优势:
Pod内容器可以不用指定vCPU和内存规格或者限制资源上限,各容器可以更大程度地共享资源。
在基因计算和Istio场景下,业务框架会自动为Pod添加Sidecar容器,通过指定Pod级别规格,ECI可以无缝对接这类业务框架。
您可以在Pod metadata中添加Annotation来指定Pod的vCPU和内存,配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs : "2-4Gi" #指定ECI Pod的vCPU为2 vCPU,内存为4 GiB
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "500m" #容器的vCPU上限
memory: "1024Mi" #容器的内存上限