大部分情境下,如果沒有特殊的規格需求(如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和記憶體建立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" #容器的記憶體上限