針對虛擬節點,ACK託管叢集(Pro版和基礎版)和ACK專有叢集支援的調度方式不同,且有其特定的使用情境,例如直接指定Pod只調度到虛擬節點、跨可用性區域打散等。您可以依據調度情境以及叢集類型,參考本文選擇合適的調度方式。
常見虛擬節點調度情境
只調度到虛擬節點。
優先調度到ECS節點,在ECS節點資源不足時,再將Pod調度到虛擬節點。
在ACK叢集基礎版中,調度情境1推薦您使用label alibabacloud.com/eci=true
完成,調度情境2推薦您升級至ACK叢集Pro版,以擷取更豐富的產品層次能力、更高等級可靠性、SLA保障和更大叢集容量。ACK支援ACK叢集基礎版無縫遷移到ACK叢集Pro版,請參見 熱遷移ACK叢集基礎版至ACK叢集Pro版。
注意事項
不推薦您使用ElasticWorkload以及ElasticResource的(annotations:alibabacloud.com/burst-resource),這些組件或註解處於非活躍開發狀態。
virtual-kubelet-autoscaler組件目前處於停止維護狀態。推薦您將ACK叢集基礎版升級至ACK叢集Pro版,並卸載該組件,避免佔用節點資源。您可以基於Kubernetes原生調度語義實現ECI Pod的打散部署及親和部署。具體操作,請參見實現ECI Pod可用性區域打散以及親和調度。
方案對比及選型建議
關於表格中欄位的說明:
優先順序調度:叢集中存在不同的節點類型時,可以自行配置Pod調度到不同節點類型的優先順序。例如優先調度到ECS節點,ECS節點不足時再調度到虛擬節點。
如果某種方式不支援優先順序調度,表明使用該方式時,無法對不同節點集合進行優先順序編排。例如通過
alibabacloud.com/eci=true
只能將指定Pod調度到虛擬節點,無法將Pod優先調度到ECS,在ECS資源不足時再調度到虛擬節點。嚴格的調度策略:調度到不同類型節點池時的規則是否為強約束。
非嚴格的調度策略為軟約束。例如,節點親和性的preferredDuringSchedulingIgnoredDuringExecution會優先調度到ECS節點,但可能會在節點綜合打分策略影響下,在ECS節點資源尚存時仍舊調度到虛擬節點。
嚴格的調度策略為硬約束。例如,ResourcePolicy能夠保證在ECS節點的資源滿足Pod需求時一定將Pod調度到ECS節點上。
ACK叢集Pro版
調度方式 | 典型情境 | 優先順序調度 | 優先縮容ECI Pod | 是否推薦使用 | 相關操作文檔 | |
labels: | 指定只調度到虛擬節點,但不支援指定是哪一個虛擬節點。 | 不支援 | 不涉及 | 推薦 | ||
Kubernetes原生調度語義 | nodeSelector | 添加Toleration後,指定只調度到虛擬節點上,同時可以指定調度到哪一個虛擬節點。 | 不支援 | 不涉及 | 推薦 | |
親和性與反親和性 | 通過Taint、Toleration和NodeAffinity,指定只調度到ECI、只調度到ECS或優先調度到ECS(例如在ECS節點資源不足時調度到虛擬節點),是一種彈性調度策略。 同時支援(且僅支援)先縮容ECI,再縮容ECS。 | 支援(非嚴格的調度策略) | 支援 | 推薦 | ||
Pod拓撲分布約束 | 跨可用性區域打散,實現高可用和高效能調度需求。 | 不支援 | 支援 | 推薦 | ||
ResourcePolicy |
| 支援(嚴格的調度策略) | 支援 | 推薦 | ||
UnitedDeployment | 支援根據Deployment應用副本數制定調度到ECS或虛擬節點的策略,例如,副本數10以內優先使用訂用帳戶的ECS資源,超出10個不超出20個的使用Spot資源,超出20個的再使用ECI資源。 | 支援 | 支援 | 推薦 | ||
ElasticWorkload (非活躍開發狀態,建議使用UnitedDeployment) | 將Deployment副本進行分組調到ECS或虛擬節點。 | 支援 | 支援 | 不推薦 | ||
ElasticResource(Annotation: (非活躍開發狀態) | 僅支援兩種彈性調度策略:
| 支援 | 支援 | 不推薦 | ||
virtual-kubelet-autoscaler組件 (已停止維護) | 僅支援優先調度到ECS節點,在ECS節點資源不足時再調度到虛擬節點。 | 支援 | 支援 | 不推薦 | 無 |
ACK叢集基礎版和ACK專有叢集
調度方式 | 典型情境 | 優先順序調度 | 優先縮容ECI Pod | 是否推薦使用 | 相關操作文檔 | |
labels: | 指定只調度到虛擬節點,但不支援指定是哪一個虛擬節點。 | 不支援 | 不涉及 | 推薦 | ||
UnitedDeployment | 支援根據Deployment應用副本數制定調度到ECS或虛擬節點的策略,例如,副本數10以內優先使用訂用帳戶的ECS資源,超出10個不超出20個的使用Spot資源,超出20個的再使用ECI資源。 | 支援 | 支援 | 推薦 | ||
Kubernetes原生調度語義 | nodeSelector | 添加Toleration後,指定只調度到虛擬節點上,同時可以指定調度到哪一個虛擬節點。 | 不支援 | 支援 | 不推薦 相比於ACK叢集Pro版,ACK叢集基礎版和ACK專有叢集中的kube-scheduler在Pod調度時無法感知底層庫存情況,所以生產成功的確定性會降低。 | |
親和性與反親和性 | 通過Taint、Toleration和NodeAffinity,指定只調度到ECI、只調度到ECS或優先調度到ECS(例如在ECS節點資源不足時調度到虛擬節點),是一種彈性調度策略。 | 支援(非嚴格的調度策略) | 支援 | |||
Pod拓撲分布約束 | 跨可用性區域打散,實現高可用和高效能調度需求。 | 不支援 | 支援 | |||
ElasticWorkload (非活躍開發狀態,建議使用UnitedDeployment) | 將Deployment副本進行分組調到ECS或虛擬節點。 | 支援 | 支援 | 不推薦 | ||
ElasticResource(Annotation: (非活躍開發狀態) | 僅支援兩種彈性調度策略:
| 支援 | 支援 | 不推薦 | ||
virtual-kubelet-autoscaler組件 (已停止維護) | 僅支援優先調度到ECS節點,在ECS節點資源不足時再調度到虛擬節點。 | 支援 | 支援 | 不推薦 | 無 |