大部分情境下,如果沒有特殊的規格需求(如GPU、本地碟等),推薦您指定vCPU和記憶體來建立ECI Pod(即ECI執行個體)。在此基礎上,您可以進一步指定算力類別。例如:對於0.25~8 vCPU的規格需求,在輕量型應用等入門情境,您可以選擇經濟型規格來滿足降低成本的需求;對於1 vCPU及以上的規格需求,如果效能需求較高,則可以選擇通用型規格。
算力類別說明
為了更好地滿足低成本或效能穩定的需求,ECI推出了指定算力類別功能。當您採用指定vCPU和記憶體方式建立ECI執行個體時,ECI會將底層規格分為經濟型和通用型兩個算力類別。您可以按需選擇,系統會從對應類別的底層規格中自動選擇合適的規格。
經濟型(economy)
支援的vCPU範圍為0.25~8 vCPU,規格單價相比通用型更低。
通用型(general)
支援的vCPU範圍為1~64 vCPU,規格單價與未開通指定算力類別時的ECI規格定價一致。在相同vCPU和記憶體條件下,通用型規格的效能更優。
如何選擇算力類別
您可以根據業務情況,以及對低成本、效能穩定或高可用等需求,來選擇合適的算力類別。建議如下:
對於輕量型應用等入門情境,可以選擇經濟型規格來降低資源成本。
對於效能需求較高的業務情境,可以選擇通用型規格,該類別規格效能更優,並且與未指定算力類別相比,效能表現更穩定。
為了避免庫存不足的情況,如果您的業務對效能波動有一定的容忍,可以指定多個算力類別來保證高可用。
規格說明
ECI支援的經濟型和通用型的詳細規格如下:
各規格支援的臨時儲存空間大小預設均為30 GiB。
經濟型規格
通用型規格
計費說明
經濟型規格和通用型規格目前處於公測中。
經濟型規格
相比於未指定算力類別時的規格,經濟型規格的記憶體單價與之前一致,vCPU單價更低。
vCPU單價(vCPU):0.00000424 USD/秒(0.015264 USD/小時)
記憶體單價(GiB):0.00000096 USD/秒(0.003456 USD/小時)
通用型規格
與未開通指定算力類別時的ECI規格定價一致。
vCPU單價(vCPU):0.0000077 USD/秒(0.02772 USD/小時)
記憶體單價(GiB):0.00000096 USD/秒(0.003456 USD/小時)
ECI Pod建立成功後,您可以執行kubectl describe pod
命令查看詳情,通過k8s.aliyun.com/eci-instance-compute-category
欄位確認ECI Pod實際使用的算力類別。計費會按照對應類別的規格單價計算。
使用限制
指定算力類別功能具有以下限制:
僅適用於指定vCPU和記憶體建立ECI執行個體。
如果指定了ECS規格,則優先會採用指定的ECS規格,即無法指定算力類別。
不支援搶佔式執行個體功能。
如果同時配置了搶佔式執行個體和指定算力類別的Annotation,系統會報錯(錯誤碼為FeatureBasedConstraintConflict)。
不支援ARM架構的規格。
如果將ECI Pod調度到ARM架構節點的同時,配置了指定算力類別的Annotation,系統會報錯(錯誤碼為FeatureBasedConstraintConflict)。
不支援與以下功能同時使用:
指定或排除ECS規格類型系列
指定或排除ECS規格代數
配置說明
指定vCPU和記憶體建立ECI Pod時,支援以下兩種方式:
指定Pod內容器的vCPU和記憶體:通過定義Containers的limits或requests來指定,建議使用limits。
指定Pod層級的vCPU和記憶體:通過在Pod metadata中添加
k8s.aliyun.com/eci-use-specs
的Annotation來指定。
如果沒有指定,或者同時設定了limits、requests和k8s.aliyun.com/eci-use-specs
,實際生效情況請參見配置說明。
在指定vCPU和記憶體的基礎上,您可以在Pod metadata中添加Annotation來指定算力類別,對應Annotation為k8s.aliyun.com/eci-compute-category
,配置說明如下:
取值為
economy
(表示經濟型)和general
(表示通用型)。支援設定多個算力類別,系統會按照設定順序建立。
Annotation請添加在Pod的metadata下,例如:建立Deployment時,Annotation需添加在spec>template>metadata下。
僅支援在建立ECI Pod時添加ECI相關Annotation來生效ECI功能,更新ECI Pod時添加或者修改ECI相關Annotation均不會生效。
生效規則
開通指定算力類別功能後,根據建立ECI Pod時設定的條件,實際建立的ECI Pod所使用的規格和算力類別按以下規則生效:
ECI Pod建立成功後,您可以執行kubectl describe pod
命令查看詳情,通過k8s.aliyun.com/eci-instance-compute-category
欄位確認ECI Pod實際使用的算力類別。計費會按照對應類別的規格單價計算。
建立ECI執行個體時設定的條件 | 實際生效情況 |
未指定vCPU和記憶體,但指定了算力類別。 | 建立2 vCPU,4 GiB記憶體的執行個體,算力類別為指定的類別。 |
指定了vCPU和記憶體,且指定了算力類別,兩者組合後符合ECI的規格要求。 | 按照指定的條件建立執行個體。 |
指定的vCPU小於1 vCPU,但指定算力類別為通用型。 | 不符合ECI的規格要求,會自動規整到1 vCPU的通用型規格。 |
指定的vCPU大於8 vCPU,但指定算力類別為經濟型。 | 不符合ECI的規格要求,無法自動規整,會出現報錯。 |
指定了vCPU和記憶體,且指定了算力類別,指定的vCPU屬於該算力類別的vCPU範圍,但不符合ECI的規格要求。 | 自動按照ECI支援的規格進行規整。規整時將向最接近的ECI規格進行規整,需滿足指定的vCPU和記憶體≤ECI規格的vCPU和記憶體。 例如:指定vCPU和記憶體為 |
指定了多個vCPU和記憶體規格,或者多個算力類別。 | 系統按照以下規則選擇規格:
例如:指定vCPU和記憶體為
重要 由於規格優先順序高於算力類別。在指定多個算力類別的情況下,如果指定的vCPU和記憶體不符合ECI的規格要求,資源規整時,系統會考慮所有算力類別的合集,選擇最接近您指定的vCPU和記憶體規格來向上規整,如果此時規整的vCPU和記憶體在某一算力類別內不合法,那麼該算力類別在當前vCPU和記憶體規格的調度中不予考慮。 例如:指定vCPU和記憶體為 |
配置樣本
樣本一:設定容器的limits,並指定算力類別為經濟型
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-compute-category: "economy" # 指定算力類別為經濟型 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
樣本二:設定容器的limits,並指定算力類別優先使用通用型其次使用經濟型
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-compute-category: "general,economy" # 指定算力類別優先使用通用型其次使用經濟型 spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 resources: limits: cpu: "2000m" #指定nginx容器的vCPU為2 vCPU memory: "4096Mi" #指定nginx容器的記憶體為4 GiB - name: busybox image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30 command: ["sleep"] args: ["999999"] resources: limits: cpu: "2000m" #指定busybox容器的vCPU為2 vCPU memory: "4096Mi" #指定busybox容器的記憶體為4 GiB
樣本三:通過
k8s.aliyun.com/eci-use-specs
指定多個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,4-8Gi" # 指定ECI Pod的規格優先使用2 vCPU,4 GiB記憶體,其次使用4 vCPU,8 GiB記憶體 k8s.aliyun.com/eci-compute-category: "economy" # 指定算力類別為經濟型 spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80