針對虛擬節點,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節點資源不足時再調度到虛擬節點。 | 支持 | 支持 | 不推薦 | 無 |