共用方式為


Azure Arc 所啟用 AKS 中的應用程式可用性

適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

Azure Arc 所啟用 Azure Kubernetes Service (AKS) 提供完全支援的容器平臺,可在 Kubernetes 容器協調流程平臺上執行雲端原生應用程式。 此架構支援執行虛擬化的 Windows 和 Linux 工作負載。

AKS 架構是使用故障轉移叢集和即時移轉所建置,此移轉會自動針對目標 (工作負載) 叢集啟用。 在各種中斷事件期間,裝載客戶工作負載的虛擬機器可以自由移動,卻不會覺察到應用程式停機。 此架構表示傳統企業客戶將舊版應用程式管理為 Azure Stack HCI 或 Windows Server 上的 AKS 單一應用程式,會取得類似 (或比舊版 VM 應用程式上目前遇到的更) 運行時間。

本文說明一些基本概念,適用於想要在已啟用即時移轉的 AKS Arc 上執行容器化應用程式的使用者,以確保應用程式可在中斷期間使用。 Kubernetes 術語,例如「自發性中斷」和「非自發性中斷」,是用來表示在 Pod 中執行的應用程式停機。

即時移轉是什麼?

即時移轉是一種 Hyper-V 功能,可讓您以透明方式將執行中的虛擬機器從一部 Hyper-V 主機移至另一部 Hyper-V 主機,但不會覺察到停機。 實時移轉的主要優點是彈性;執行中的虛擬機不會系結至單一主計算機。 這可讓使用者在解除委任或升級主機之前,先執行例如清空特定虛擬機器主機等動作。 與 Windows 故障轉移叢集配對時,即時移轉可讓您建立高可用性和容錯系統。

Azure Stack HCI 和 Windows Server 上 AKS 的目前架構假設您已在 Azure Stack HCI 叢集環境中啟用即時移轉。 因此,系統會設定即時移轉來建立所有 Kubernetes 背景工作節點 VM。 當發生中斷時,這些節點可以在實體主機中移動,確保平台的高可用性。

此圖顯示已啟用故障轉移叢集的 Azure Stack HCI 和 Windows Server 上的 AKS。

當您以單一方式在 Kubernetes 上執行舊版應用程式時,此架構符合您的高可用性需求。 Kubernetes 會管理可用背景工作節點上 Pod 的排程,而即時移轉則會管理可用實體主機上的背景工作節點 VM 排程。

此圖顯示以單一身分執行的舊版應用程式範例。

應用程式中斷案例

一項有關在 Azure Stack HCI 和 Windows Server 上的 AKS 之 VM 中執行的應用程式復原時間的比較研究清楚顯示,一般中斷事件對應用程式的影響很小。 三個範例中斷案例如下:

  • 套用導致實體機器重新開機的更新。
  • 套用包含重建背景工作節點的更新。
  • 實體機器的計畫外硬體故障。

注意

這些案例假設應用程式擁有者仍使用 Kubernetes 相似性設定和非相似性設定,以確保能在背景工作節點中正確排程 Pod。

中斷事件 在 Azure Stack HCI 的 VM 中執行應用程式 在 Azure Stack HCI 或 Windows Server 上的 AKS 上執行 VM 中的應用程式
套用會導致實體機器重新啟動的更新 不影響 不影響
套用涉及重新建立背景工作節點 (或重新啟動 VM) 不影響 不定
實體機器的計畫外硬體故障 6 - 8 分鐘 6 - 8 分鐘

套用會導致實體機器重新啟動的更新

在實體主機維護事件中 (例如套用導致主機電腦重新開機的更新),在叢集中執行的應用程式不會受到任何影響。 叢集管理員會清空主機,並確保所有 VM 都會在套用更新之前即時移轉。

套用涉及重新建立背景工作節點的更新

此案例涉及關閉背景工作節點 VM 以執行例行維護。 為了準備更新,叢集管理員會清空並隔離節點,讓所有 Pod 在套用更新之前收回到可用的背景工作角色節點。 更新完成後,背景工作節點會重新加入,並可供排程使用。

注意

應用程式的可用性會有所不同,因為它包含下載基底容器映像所需的時間,特別是針對儲存在公用雲端中的較大映射。 因此,建議您使用小型基底容器映射,而針對 Windows 容器,建議您使用 nano server 基底映射。

實體機器的計畫外硬體故障

在此案例中,其中一個背景工作節點 VM 中裝載舊版應用程式容器/Pod 的實體機器發生非自發性中斷事件。 故障轉移叢集會將主機置於隔離狀態,然後在 6 到 8 分鐘之後,啟動即時將這些 VM 移轉至存活主機的程式。 在此情況下,應用程式停機時間相當於重新啟動主機和背景工作節點 VM 所需的時間。

結論

AKS故障轉移叢集技術的設計目的是要確保 Azure Stack HCI 和 Windows Server 中的運算環境具有高可用性和容錯能力。 不過,應用程式擁有者仍然必須將部署設定為可使用 DeploymentsAffinity MappingRelicaSets 等 Kubernetes 功能,以確保 Pod 在中斷案例中的復原性。

下一步

Windows Server 和 Azure Stack HCI 上的 AKS 概觀