ECI支持指定ECI的CPU和内存规格,或者指定ECI实例内的容器规格进行ECI实例的创建,ECI会尝试使用多种ECS规格进行支撑,以提供比ECS单规格更好的弹性和资源供应能力。大部分场景下,如果没有特殊的规格诉求,例如:高主频、本地SSD盘、GPU卡等规格,推荐使用该模式。

指定ECI实例内容器规格(Kubernetes默认方式)

注意 每个ECI实例内支持最多20个容器,实例内每个容器的资源支持自定义配置,但汇总到ECI实例级别需要满足CPU和内存约束。对于未满足的情况,ECI会执行自动规整操作,计费按照规整后CPU和内存值进行计费。

ECI支持的汇总后ECI实例规格如下:

vCPU 内存(GB) emptyDir空间大小(GB) 网络带宽能力(出/入)(Gbit/s) 网络收发包能力(出/入)(万PPS) 支持IPv6 多队列 弹性网卡(包括一块主网卡)
0.25 0.5、1 20 0.1 4 1 1
0.5 1、2 20 0.2 5 1 1
1 2、4、8 20 0.5 5 1 1
2 2、4、8、16 20 1 30 2 1
4 4、8、16、32 20 1.5 50 2 1
8 8、16、32、64 20 2.0 80 4 1
12 12、24、48、96 20 2.5 90 4 1
16 16、32、64 、128 20 3.0 100 4 1
24 48、96、192 20 4.5 150 6 1
32 64、128、256 20 6.0 200 8 1
52 96、192、384 20 12.5 300 32 1
64 128、256、512 20 20.0 400 16 1
说明 对于大于16vCPU规格,为了减少因操作失误造成规整,浪费计费资源,您需要在OpenAPI中严格声明相同的规格资源,否则接口会返回规格非法错误。 推荐对于大于16vCPU规格的资源,使用指定ECI实例CPU和内存规格的方式进行资源申请。

Kubernetes方式

Kubernetes原生方式使用,直接定义对应container的request即可。

apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment-basic
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9 # replace it with your exactly <image_name:tags>
        command: sleep 3600
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "500m"
            memory: "1024Mi"
      - name: busybox
        image: busybox:latest # replace it with your exactly <image_name:tags>
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: "500m"
            memory: "1024Mi"
      nodeName: virtual-node-eci-0  #virtual node name

OpenAPI方式

通过CreateContainerGroup OpenAPI进行实例创建时,可以通过VSwitchId来指定多可用区,通过InstanceType来指定多规格,其他参数的使用请参考接口CreateContainerGroup文档。

请求参数:

名称 类型 是否必选 示例值 描述
Container.N.Cpu Float 2 CPU,单位:核。N表示第几个容器,1,2,3顺序赋值。
Container.N.Memory Float 4 内存,单位:GiB。N表示第几个容器,1,2,3顺序赋值。

指定ECI实例规格

在指定ECI实例级别的CPU和内存模式下,对于指定的CPU和内存规格,ECI会尝试使用多种ECS规格进行支撑,以提供比ECS单规格更好的库存和弹性能力。在兼容性方面,通过在Pod定义中使用annotation兼容Kubernetes。

优势

  • 实例内容器可以不用限制资源上限,ECI实例内容器resource定义可以不用指定request和limit,各容器可以最大程度的共享申请的资源。
  • 在基因计算和Istio场景下,业务框架会自动给Pod添加sidecar容器,通过显式指定ECI实例规格,ECI可以无缝的对接这类业务框架。

Kubernetes方式

通过在Pod定义中使用ECI Pod Annotation k8s.aliyun.com/eci-use-specs。

apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment-basic
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
      annotations:
        k8s.aliyun.com/eci-use-specs : "2-4Gi"  
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9 # replace it with your exactly <image_name:tags>
        ports:
        - containerPort: 80
      - name: busybox
        image: busybox:latest # replace it with your exactly <image_name:tags>
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: "500m"
            memory: "1024Mi"

OpenAPI方式

通过CreateContainerGroup OpenAPI进行实例创建时,可以通过VSwitchId来指定多可用区,通过InstanceType来指定多规格,其他参数的使用请参考接口CreateContainerGroup文档。

请求参数:

名称 类型 是否必选 示例值 描述
Cpu Float 2 CPU,单位:核。
Memory Float 4 内存,单位:GiB。