大部分場景下,如果沒有特殊的規格需求(如GPU、本地盤等),推薦您指定vCPU和內存來創建ECI Pod(即ECI實例),系統會嘗試使用多種ECS規格進行支撐,以提供比ECS單規格更好的彈性和資源供應能力。
規格說明
您可以指定實例或者容器的vCPU和內存來創建ECI實例。如果指定的vCPU和內存不符合要求,系統將自動按照ECI支持的規格進行規整。規整時將向最接近的ECI規格進行規整,同時需滿足指定的vCPU和內存≤ECI規格的vCPU和內存。例如:在華東1(杭州)地域創建ECI實例時,聲明了7 vCPU,13 GiB內存,則實際創建的ECI實例為8 vCPU,14 GiB內存。
ECI支持的規格如下:
如果未指定vCPU和內存規格,系統默認采用2 vCPU和4 GiB內存的規格創建ECI實例。
目前僅支持一塊彈性網卡,暫不支持多網卡能力。
各規格支持的默認臨時存儲空間大小均為30 GiB。
vCPU | 內存(GiB) | 網絡帶寬能力(出+入)(Gbit/s)(理論上限值) |
0.25 | 0.5、1 | 0.08 |
0.5 | 1、2 | 0.08 |
1 | 2、4、8 | 0.1 |
2 | 1、2、4、8、16 | 1 |
4 | 2、4、8、16、32 | 1.5 |
8 | 4、8、16、32、64 | 2 |
12 | 12、24、48、96 | 2.5 |
16 | 16、32、64 、128 | 3 |
24 | 24、48、96、192 | 4.5 |
32 | 32、64、128、256 | 6 |
52 | 96、192、384 | 12.5 |
64 | 128、256、512 | 20 |
下表中的規格僅在部分地域支持,創建以下規格的ECI實例時請確保已指定支持的地域和可用區,否則會因為無庫存而導致創建失敗。
支持的地域為:華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、新加坡。
不支持指定下表中的規格創建搶占式實例。
vCPU | 內存(GiB) | 網絡帶寬能力(出+入)(Gbit/s)(理論上限值) |
2 | 6、10、12、14 | 1 |
4 | 6、10、12、14、18、20、22、24、26、28、30 | 1.5 |
6 | 6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48 | 1.5 |
8 | 10、12、14、18、20、22、24、26、28、30、34、36、38、40、42、44、46、48、50、52、54、56、58、60、62 | 2.5 |
配置說明
指定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" #容器的內存上限