指定vCPU和内存创建Pod

更新时间: 2023-11-02 11:34:47

大部分场景下,如果没有特殊的规格需求(如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"   #容器的内存上限

阿里云首页 弹性容器实例 相关技术圈