Azure Arc 所啟用 AKS 中的可用性設定組
可用性設定組 是彼此具有弱式反親和性關聯性的 VM 邏輯群組,以確保它們會平均分散到實體叢集中的可用容錯網域。 此內容中的容錯網域是實體主機或實體主機群組。 使用可用性設定組,AKS Arc 可以改善 Kubernetes 工作負載的可用性和散發。 可用性設定組可以避免單一節點失敗可能會導致多個 VM 關閉或變得不平衡的情況。
概觀
可用性設定組為 Azure 本機使用者的 AKS 提供數個優點,例如:
- 藉由避免相同節點集區或控制平面內的多個 VM 因為單一節點失敗而關閉或變得不平衡,藉此改善應用程式的可用性和復原能力。
- 藉由確保 VM 平均分散到可用節點,而不會集中在單一節點或節點子集上,以優化叢集的資源使用量和效能。
- 符合您正在尋找可靠且一致內部部署 Kubernetes 體驗的客戶和合作夥伴的最佳作法和期望。
啟用可用性設定組
使用 Azure 本機版本 23H2 上的 AKS,當您建立節點集區時,預設會啟用可用性設定組功能。 使用 Windows Server 上的 AKS,您可以在建立 AKS 叢集時新增 -enableAvailabilitySet
參數來啟用可用性設定組功能,例如 New-AksHciCluster -Name <name> -controlPlaneNodeCount 3 -osType Linux -kubernetesVersion $kubernetesVersion -enableAvailabilitySet
。
可用性設定組如何在 Azure Arc 啟用的 AKS 中運作
當您建立新的 AKS Arc 叢集時,AKS Arc 會自動建立可用性設定組、一個用於控制平面 VM,另一個用於 Kubernetes 叢集中的每個節點集區。 每個節點集區都有自己的可用性設定組。 使用此配置時,AKS Arc 可確保相同角色的 VM(控制平面或節點集區)永遠不會位於相同的實體主機上,而且它們會分散到叢集中的可用節點。
建立可用性設定組並指派 VM 之後,系統會自動將它們放在適當的實體節點上。 如果節點失敗,系統也會自動將 VM 故障轉移至其他節點,並在節點復原時重新平衡它們。 如此一來,您可以達成 Kubernetes 工作負載的高可用性和最佳散發,而不需要手動介入。
請考慮 Azure 本機上的 AKS 版本 23H2 叢集,其中包含兩部實體主機機器、 主機 A 和 主機 B、三個控制平面 VM,以及兩個背景工作節點 VM、 Nodepool1VM1 和 Nodepool1VM2。 為了確保 Kubernetes 應用程式的高可用性,節點集區 VM 絕不能共用相同的主機,除非其中一部主機暫時無法用於計劃性維護或容量問題,這可能會導致 VM(虛擬機)暫時放在替代主機上。
在下圖中,每個色彩都代表反同質群組:
如果 主機 B 因重新啟動而關閉, 控制平面 VM2、 控制平面 VM3 和 Nodepool1VM2 故障轉移至 主機 A ,如下圖所示。 假設您的應用程式在 NodePoolVM1 中執行 Pod,此重新啟動不會影響您的應用程式:
在舊架構中,如果 主機 B 在重新啟動後重新上線,則無法保證 VM 會從主機 A 移回主機 B(重新平衡),因此強制工作負載維持在相同的主機上,並建立單一失敗點,如下圖所示:
AKS Arc 的可用性設定組可協助在主機從暫時中斷復原後重新平衡 VM。 在此範例中, ControlPlaneVM2、 ControlPlaneVM3 和 Nodepool1VM2 會自動移至 主機 B,如下所示:
重要
AKS Arc 中的可用性設定組是仍在演進和改進的新功能。 我們尚不支援手動設定容錯網域或可用性設定組。 建立可用性設定組之後,您無法變更其容錯網域。 VM 會在叢集建立時指派給可用性設定組,且無法移轉至不同的可用性設定組。
新增或刪除電腦
在主機刪除案例中,主機不再被視為叢集的一部分。 當您因硬體問題而取代計算機,或基於其他原因相應減少 Azure 本機叢集時,通常會發生此刪除。 在節點中斷期間,節點會維持 Azure 本機叢集的一部分,但顯示為 [關閉]。
如果實體電腦(容錯網域)已從叢集永久刪除,則不會修改可用性設定組態以減少容錯網域數目。 在此案例中,可用性設定組會進入狀況不良的狀態。 建議您重新部署 Kubernetes 叢集,讓可用性設定組以適當的容錯網域數目進行更新。
將新的實體機器(容錯網域)新增至叢集時,可用性設定組態會自動展開以包含新的計算機。 不過,現有的 VM 不會重新平衡以套用這個新組態,因為它們已經指派給可用性設定組。 建議您重新部署 Kubernetes 叢集,讓可用性設定組以適當的容錯網域數目進行更新。