ECI彈性調度是阿里雲提供的彈性調度策略。您可以在部署服務時通過添加Annotations來聲明只使用ECS或ECI彈性資源,或者是在ECS資源不足時自動申請ECI資源。通過ECI彈性調度可以滿足您在不同工作負載的情境下對彈性資源的不同需求。本文介紹如何使用ECI彈性調度。
對於1.18~1.24版本叢集,目前仍可以使用ECI彈性調度功能,但自2023年05月起,對於1.24及以上版本,ACK已停止維護該功能。強烈建議您採用以下方案進行替換。
指定ECS和ECI的資源分派:通過Kubernetes原生調度語義(Taint、Toleration和NodeAffinity)實現只調度到ECI、只調度到ECS或優先調度到ECS等。
自訂彈性資源優先順序調度:相比Kubernetes原生調度語義,通過ResourcePolicy可以實現更加豐富、靈活的調度策略(例如優先調度到訂用帳戶ECS,其次隨用隨付ECS,最後ECI),並且額外提供了業務的逆序縮容以及業務Pod無侵入的能力。
更多關於虛擬節點調度方案的介紹、對比和選型建議,請參見調度Pod至虛擬節點。
前提條件
叢集類型為ACK託管叢集Pro版。
叢集及調度器版本需滿足以下要求。關於調度器各版本支援的功能,請參見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-virtual-node組件。具體操作,請參見通過虛擬節點將Pod調度到ECI上運行。
配置說明
為Pod添加alibabacloud.com/burst-resource的Annotations,可以聲明彈性資源的類型。alibabacloud.com/burst-resource的取值說明如下:
Annotation請添加在Pod的metadata下,例如:建立Deployment時,Annotation需添加在spec.template.metadata下。
預設不配置Annotations時:只使用叢集現有的ECS資源。
eci_only: 只使用ECI彈性資源,不使用ECS資源。eci:當前叢集ECS資源不足時,使用ECI彈性資源。|重要alibabacloud.com/burst-resource: eci與alibabacloud.com/fluid-sidecar-target: eci不能同時使用。關於alibabacloud.com/fluid-sidecar-target: eci的使用文檔,請參見Serverless資料訪問加速。
當取值不為eci、eci_only,或取值為eci_only但叢集中不存在虛擬節點時,Pod會調度失敗。在1.22.15及1.24.6版本叢集中,Pod調度失敗原因與PodStatus中的資訊對應關係為:
取值不為
eci、eci_only:requesttypemustbeeci,eci_onlyorecs。取值為
eci_only且叢集中不存在虛擬節點時: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: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 resources: limits: cpu: 2 requests: cpu: 2建立使用ECI彈性調度的Pod。
kubectl apply -f nginx-deployment.yaml