ECI彈性調度是阿里雲提供的彈性調度策略。您可以在部署服務時通過添加Annotations來申明只使用ECS或ECI彈性資源,或者是在ECS資源不足時自動申請ECI資源。通過ECI彈性調度可以滿足您在不同工作負載的情境下對彈性資源的不同需求。本文介紹如何使用ECI彈性調度。
ECI彈性調度功能目前依然支援,計劃在後續版本廢棄。後續ACK將通過原生語義方式提供ECIAuto Scaling支援。詳細資料,請參見指定ECS和ECI的資源分派。
ECI彈性調度功能已升級到自訂彈性資源優先順序功能。原有情境均可支援,且自訂資源優先順序策略更加豐富、靈活。
推薦使用自訂彈性資源優先順序功能。相比ECIAuto Scaling,該功能將額外提供業務的逆序縮容以及業務Pod無侵入的能力。詳細資料,請參見自訂彈性資源優先順序調度。
索引
前提條件
已建立ACK Pro版叢集,且叢集的Kubernetes版本不低於1.18。具體操作步驟,請參見建立ACK Pro版叢集。
對於不同ACK版本的叢集,調度器版本需要滿足以下要求。關於調度器各版本支援的功能,請參見kube-scheduler。
ACK版本
調度器版本
1.18
v1.18-ack-3.0及以上
1.20
v1.20.4-ack-4.0及以上
1.22
v1.22.3-ack-1.0及以上
1.24
v1.24.3-ack-2.0及以上
已在ACK Pro版叢集中部署ack-virtual-node。具體操作,請參見ACK使用ECI。
Annotation
alibabacloud.com/burst-resource: eci
與alibabacloud.com/fluid-sidecar-target: eci
不能同時使用。alibabacloud.com/fluid-sidecar-target: eci
的使用文檔,請參見Serverless資料訪問概述。
操作步驟
在Depolyment對象的template.metadata
下配置Pod的Annotations,申明彈性資源的類型。alibabacloud.com/burst-resource
的取值有以下選擇:
預設不填Annotations時:只使用叢集現有的ECS資源。
eci:當前叢集ECS資源不足時,使用ECI彈性資源。
eci_only: 只使用ECI彈性資源,不使用叢集的ECS資源。
當取值不為eci、eci_only,或取值為eci_only但叢集中不存在Virtual node時,Pod將會調度失敗。在1.22.15及1.24.6版本叢集中,Pod調度失敗原因與PodStatus中的資訊對應關係為:
取值不為eci、eci_only:
requesttypemustbeeci,eci_onlyorecs
。取值為eci_only且叢集中不存在Virtualnode:
doesn'tfitecitype:eci_only
。
建立並拷貝以下內容到nginx-deployment.yaml檔案中。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 4 selector: matchLabels: app: nginx template: metadata: name: nginx annotations: alibabacloud.com/burst-resource: eci # 添加註解,選擇彈性調度的資源類型。 labels: app: nginx spec: containers: - name: nginx image: nginx resources: limits: cpu: 2 requests: cpu: 2
執行以下命令,建立使用ECI彈性調度的Pod。
kubectl apply -f nginx-deployment.yaml