在Kubernetes叢集中,調度(Scheduling)過程具體是指調度器組件(kube-scheduler)根據叢集整體資源情況,將待啟動並執行Pod分配到合適的節點上。由於ACS叢集以虛擬節點的形式提供資源,因此您無需考慮複雜的資源分派策略,只需專註於應用的編排規則即可。本文介紹ACS叢集中常用調度能力的使用方法和注意事項。
Kubernetes原生調度策略
Kubernetes原生調度器提供了多種的調度外掛程式,在ACS的虛擬節點中,您只需關注親和性相關策略,來保證應用的效能和高可用情境,具體包括可用性區域拓扑打散、節點親和性、Pod間親和性。
功能 | 策略說明 | 參考文檔 |
可用性區域拓扑打散 | 通過在拓撲分布約束協議欄位TopologyKey中指定虛擬節點的標籤,實現對工作負載的可用性區域打散能力。 | |
節點親和性 | 虛擬節點以label的形式標記了各類屬性,例如可用性區域。通過在nodeSelector等欄位中描述親和性需求,可以將應用運行在特定屬性的虛擬節點上。 | |
Pod間親和性 | 用於表達Pod之間的親和性偏好,相較於節點親和性,Pod間親和性調度支援基於已經在虛擬節點上啟動並執行Pod的標籤來約束Pod可以調度到的範圍。通過在podAffinity等欄位中描述親和性需求,可以將Pod調度到指定的拓撲域。 |
自訂資源優先順序調度
功能 | 策略說明 | 典型情境 | 參考文檔 |
自訂資源優先順序調度 | 支援為Pod同時指定多種Compute Class或Compute QoS,調度器將在庫存不足時自動嘗試生產其他類型的Pod執行個體。 | 應用要求優先使用某一類型應用,例如計算任務希望優先使用性價比更優的best-effort型執行個體。 |
任務調度
K8s叢集中,任務型應用的申請資源需求更為多樣,例如AI訓練任務會要求保障一組Pod都可以同時申請到資源,在應用較多的叢集內還會有資源容量管理的需求,ACS針對任務型應用提供了以下調度能力。
功能 | 策略說明 | 典型情境 | 參考文檔 |
Gang scheduling | 要求在調度時按照一組Pod整批分配資源,確保這組Pod都可以同時申請到資源,當無法滿足時,這組Pod應都集體處於Pending狀態。 | 高效能運算、AI訓練等任務,應用需要所有副本都啟動才能運行,如MPI任務。 | |
Capacity Scheduling | 允許叢集為特定的命名空間設定資源容量限制。 | 多個使用者或應用共用叢集,需要按命名空間限制資源使用。 |