此案例說明如何設計和實作在 Azure 本機上執行的 Azure Kubernetes Service (AKS) Microsoft 基準架構。
本文包含根據組織業務需求對叢集的網路、安全性、身分識別、管理和監視的建議。 這是兩篇文章架構基準指引集的一部分。 請參閱這裡的網路設計建議。
重要
本文中的資訊適用於 Azure Stack HCI 版本 22H2 上的 AKS,以及 Windows Server上的 AKS-HCI。 最新版的 AKS 會在 Azure Stack HCI 版本 23H2 操作系統上執行。 如需最新版本的詳細資訊,請參閱 Azure Stack HCI OS 上的 AKS 版本 23H2 檔。
架構
下圖顯示 Azure 本機或 Windows Server 2019/2022 數據中心故障轉移叢集上 Azure Kubernetes Service 的基準架構:
上 Azure Kubernetes Service 基準架構的概念影像
下載此架構的 Visio 檔案。
此架構包含下列元件和功能:
- Azure Stack HCI 版本 22H2。 超融合式基礎結構 (HCI) 叢集解決方案,可裝載虛擬化的 Windows 和 Linux 工作負載,以及其在混合式內部部署環境中的記憶體。 Azure 本機實例會實作為 2-8 節點叢集。
- Azure 本機上的 Azure Kubernetes Service (AKS)。 AKS 的內部部署實作,可大規模自動化執行容器化應用程式。
- Azure Arc。將 Azure Resource Manager 型管理模型延伸至非 Azure 資源的雲端式服務,包括非 Azure 虛擬機(VM)、Kubernetes 叢集和容器化資料庫。
- Azure 原則。 雲端式服務,可藉由評估 Azure(包括已啟用 Arc 的)資源,將這些資源的屬性評估為商務規則,以協助強制執行組織標準和大規模評估合規性。 這些標準也包含適用於 Kubernetes 的 Azure 原則,其會將原則套用至叢集內執行的工作負載。
- Azure 監視器。 雲端式服務,藉由提供完整的解決方案來收集、分析及處理來自雲端和內部部署環境的遙測數據,以最大化應用程式和服務的可用性和效能。
- 適用於雲端的 Microsoft Defender。 統一的基礎結構安全性管理系統,可強化數據中心的安全性狀態,並在雲端和內部部署的混合式工作負載之間提供進階威脅防護。
- Azure 自動化。 提供雲端式自動化和設定服務,可支援跨 Azure 和非 Azure 環境進行一致的管理。
- 維列羅 開放原始碼工具,支援隨選備份和排程備份,並還原 Kubernetes 叢集中的所有物件。
- Azure Blob 儲存體。 雲端原生工作負載、封存、數據湖、高效能運算和機器學習服務可大幅調整且安全的物件記憶體。
元件
- Azure Stack HCI 版本 22H2
- 在 Azure 本機 上
Azure Kubernetes Service (AKS) - Windows Admin Center
- Azure 訂用帳戶
- Azure Arc
- Azure 角色型存取控制 (Azure RBAC)
- Azure 監視器
- 適用於雲端的 Microsoft Defender
案例詳細資料
潛在使用案例
- 在 AKS 的內部部署 Kubernetes 實作中實作高可用性容器型工作負載。
- 大規模自動執行容器化應用程式。
- 透過Microsoft認證的解決方案、雲端式自動化、集中式管理和集中式監視,降低總擁有成本(TCO)。
認證硬體
使用 Azure 本機認證的硬體,其提供安全開機、聯合可擴展韌體介面 (UEFI) 和信任平臺模組 (TPM) 設定。 計算需求取決於應用程式,以及叢集上 AKS 中執行的背景工作節點數目。 使用多個實體節點來部署 Azure 本機或至少兩個節點 Windows Server Datacenter 故障轉移叢集,以達到高可用性。 所有伺服器都必須使用相同的製造商和型號,使用 64 位 Intel Nehalem 等級、AMD EPYC 等級或更新版本的相容處理器搭配第二層地址轉譯 (SLAT)。
叢集部署策略
AKS 藉由提供精靈或 PowerShell Cmdlet,讓您可用來設定 Kubernetes 和基本 Azure 本機附加元件,來簡化內部部署 Kubernetes 部署。 AKS 叢集在 Azure 本機上具有下列元件:
- 管理叢集。 在 Azure 本機或 Windows Server 2019/2022 Datacenter 故障轉移叢集上執行的高可用性虛擬機 (VM) 上部署管理叢集。 管理叢集負責部署和管理多個工作負載叢集,其中包含下列元件:
- API 伺服器。 與管理工具互動。
- 負載平衡器。 管理管理叢集之 API 伺服器的負載平衡規則。
- 工作負載叢集。 實作高可用性控制平面元件和背景工作節點元件。 容器化應用程式會在工作負載叢集上執行。 若要達到應用程式隔離,您最多可以部署八個工作負載叢集。 工作負載叢集包含下列元件:
- 控制平面。 在Linux散發套件上執行,並包含與 Kubernetes API 互動的 API 伺服器元件,以及用於儲存叢集所有元件和數據之分散式索引鍵/值存放區等。
- 負載平衡器。 在 Linux VM 上執行,並為工作負載叢集提供負載平衡服務。
- 背景工作節點。 在裝載容器化應用程式的 Windows 或 Linux 作業系統上執行。
- Kubernetes 資源。 Pod 代表應用程式的單一實例,通常具有與容器的 1:1 對應,但某些 Pod 可以包含多個容器。 部署代表一或多個相同的Pod。 Pod 和部署會以邏輯方式分組為命名空間,以控制資源的管理存取權。
網路需求
Kubernetes 透過將 Kubernetes 節點連線到虛擬網路,提供虛擬網路的抽象層。 它也透過 kube-proxy 元件提供 Pod 的輸入和輸出連線能力。 Azure 本機平臺藉由設定 HAProxy 負載平衡器 VM,進一步簡化部署。
注意
如需如何設計和實作在 Azure 本機和 Windows Server 叢集上部署 AKS 節點的網路概念的相關信息,請參閱本系列中的第二篇文章,網路架構。
此架構會使用使用下列其中一個網路選項來設定 IP 位址的虛擬網路:
- 靜態IP網路。 針對部署中的所有物件,使用靜態、定義的位址池。 它增加了額外的好處,並保證工作負載和應用程式一律可連線。 這是建議的方法。
- DHCP 網路功能。 使用動態主機設定通訊協定 (DHCP) 伺服器,將動態IP位址配置給 Kubernetes 節點、基礎 VM 和負載平衡器。
虛擬IP集區是一系列保留的IP位址,用於將IP位址配置至 Kubernetes 叢集 API 伺服器和 Kubernetes 服務。
使用 Project Calico for Kubernetes 取得其他網路功能,例如網路原則和流程控制。
記憶體需求
針對叢集中的每部伺服器,請使用相同大小和模型的相同磁碟驅動器類型。 Azure Local 可與直接連結的序列進階技術附件 (SATA)、序列連接 SCSI (SAS)、非揮發性記憶體 Express (NVMe) 或實際連結至每部伺服器一部伺服器的永續性記憶體磁碟驅動器搭配運作。 針對叢集磁碟區,HCI 會使用軟體定義的儲存技術 (儲存空間直接存取) 來結合存放集區中的實體磁碟驅動器,以達到容錯、延展性和效能。 在 Azure Local 上的 Kubernetes 中執行的應用程式通常會預期有下列記憶體選項可供它們使用:
- 磁碟區。 表示在 Pod 和應用程式生命週期之間儲存、擷取和保存數據的方式。
- 永續性磁碟區。 由 Kubernetes API 建立和管理的記憶體資源,且可存在於個別 Pod 的存留期之外。
請考慮為不同層級和位置定義記憶體類別,以優化成本和效能。 儲存體類別支援永續性磁碟區的動態布建,並定義 回收原則 ,以指定刪除 Pod 時用來管理永續性磁碟區之基礎記憶體資源的動作。
管理 Azure 本機上的 AKS
您可以使用下列管理選項來管理 Azure 本機上的 AKS:
- Windows Admin Center。 為 Kubernetes 操作員提供直覺式 UI,以管理 Azure 本機上的 Azure Kubernetes Service 叢集生命週期。
- PowerShell。 可讓您輕鬆地在 Azure 本機下載、設定及部署 AKS。 PowerShell 模組也支援部署、設定其他工作負載叢集,以及重新設定現有的工作負載叢集。
Active Directory 需求
將 Azure 本機或 Windows Server Datacenter 故障轉移叢集上的 AKS 與 Active Directory Domain Services (AD DS) 環境整合,以獲得最佳管理。 可能的話,請針對 Azure 本機上的 AKS 伺服器和服務使用不同的組織單位,以提供更細微的訪問控制和許可權。 Active Directory 與 Azure Local 上的 Azure Kubernetes Service 整合,可讓使用者使用其單一登錄 (SSO) 認證,在已加入網域的計算機上聯機到 API 伺服器(使用 kubectl)。
建議
下列建議適用於大部分案例。 除非您有覆寫建議的特定需求,否則請遵循建議。
在 HCI 部署上整合 AKS 與 Azure Arc
若要將 TCO 降到最低,請整合 AKS 部署與 Azure Arc。請考慮使用下列 Azure 服務:
- Azure 監視器容器深入解析。 監視在Linux和 Windows 叢集上執行的容器工作負載效能。 它會透過計量 API 從控制器、節點和容器收集記憶體和處理器計量。 使用容器深入解析,您可以識別記憶體和處理器使用率、偵測整體 Pod 的效能、瞭解叢集的行為,以及設定警示以進行主動式監視。
- 自動化功能。 AKS 提供各種不同的自動化功能,操作系統更新與完整堆疊更新結合,包括 Azure 本機廠商和合作夥伴提供的韌體和驅動程式。 您可以從其中一部 Azure 本機電腦或從管理計算機遠端執行 Windows PowerShell。 與 Azure 自動化 與 Azure Arc 整合,可促進虛擬化和容器化工作負載的各種自動化案例。
- 維列羅和 Azure Blob 儲存體。 Velero 是一種開放原始碼工具,可支援 Kubernetes 叢集中所有物件的隨選備份、排程備份和還原,以作為 Kubernetes 自定義資源定義(CRD)定義並儲存在 etcd 資料庫中的任何資源。 它會使用命名空間或標籤選取器,為整個叢集或叢集的一部分提供 Kubernetes 資源和磁碟區的備份。 將使用 Velero 工具建立的備份集儲存在 Blob 容器中的 Azure 記憶體帳戶中。
- 已啟用 Azure Arc 的 Kubernetes Service。 在 Azure 本機實例上提供 AKS 的 Azure Resource Manager 表示法。 在 Kubernetes 命名空間中部署已啟用 Azure Arc 的代理程式、收集記錄和計量、收集叢集元數據、叢集版本和節點計數,並確保代理程式表現出最佳效能。
- Azure 原則。 使用 Azure 原則 在 AKS 叢集上部署並強制執行內建安全策略。 您也可以使用自定義原則定義來強制執行 GitOps,這是在 Git 存放庫中宣告 Kubernetes 組態(部署、命名空間等)所需狀態的做法。
- 適用於 Kubernetes 的 Azure 原則。 管理 Gatekeeper 所實作的內部叢集原則、將原則定義部署至叢集作為條件約束範本,並從一個地方報告 Kubernetes 叢集的合規性狀態。
- Azure RBAC。 用於角色指派,以及管理已啟用 Azure Arc 的 Kubernetes 存取權。
考量
這些考慮會實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構。
可靠性
- 針對管理叢集實作高可用性 VM,以及 Kubernetes 叢集中的多個主機,以符合工作負載的最低可用性層級。
- 使用 Velero 和 Azure Blob 儲存體 備份和還原工作負載叢集。 定義可用性和復原目標以符合業務需求。
- AKS 部署會使用故障轉移叢集和即時移轉,以提供高可用性和容錯。 即時移轉是一項 Hyper-V 功能,可讓您以透明方式將執行中的虛擬機從一部 Hyper-V 主機移至另一部主機,而不會察覺到停機。
- 設定部署以使用 Kubernetes 功能,例如部署、同質對應和 ReplicaSet,以確保 Pod 在中斷案例中具有復原性。
- 您應該確定 Azure Arc 部署所在的區域支援 [架構] 區段中所參考的服務。
- 請考慮限制公用容器映像的使用方式,並且只從您有權控制 SLA 的容器登錄提取,例如 ACR。
安全性
藉由保護主機和容器,專注於整個堆疊。
基礎結構安全性
- 使用 Azure 本機認證硬體,提供現用的安全開機、UEFI 和 TPM 設定。 這些技術與 虛擬化型安全性 (VBS) 結合,可協助保護安全性敏感性工作負載。 請流覽 Azure 本機解決方案,以取得已驗證的解決方案。
- 使用安全開機來確保伺服器只會開機原始設備製造商信任的軟體。
- 使用 UEFI 來控制伺服器的開機程式。
- 使用 TPM 來儲存密碼編譯密鑰,並隔離所有硬體型安全性相關功能。
- BitLocker 磁碟驅動器加密可讓您加密待用 儲存空間直接存取 磁碟區。
- 設定 Calico 網路原則 ,以定義容器之間的網路隔離規則。
- 如需提高安全性需求,請考慮在專用 Windows 伺服器上部署工作負載叢集。
- 使用可透過 Windows Admin Center 取得 適用於雲端的 Microsoft Defender,集中管理伺服器和叢集的安全性設定。 它可為已啟用Arc的 Kubernetes 叢集提供威脅防護。 適用於雲端的 Microsoft Defender 延伸模組會從叢集中的節點收集數據,並將其傳送至雲端中適用於 Kubernetes 的 Azure Defender 後端,以進行進一步分析。
- 保護與憑證的通訊。
- 使用金鑰管理伺服器 (KMS) 外掛程式輪替 Kubernetes 秘密存放區的加密金鑰(etcd)。
應用程式安全性
- 在 Azure 本機上的 AKS 上使用 Azure Key Vault 秘密提供者延伸模組,藉由將它們儲存在 Azure Key Vault 服務中,進一步保護您的不同應用程式所使用的秘密。
- 透過啟用相互 TLS (mTLS),使用 Open Service Mesh AKS 附加元件 來保護服務對服務通訊。 您也可以使用此附加元件來定義和執行服務的精細訪問控制原則。
- 針對 Kubernetes 使用 Azure 原則 來強制執行叢集安全策略,例如沒有特殊許可權的 Pod。
- 使用 Azure Container Registry,其中包含其容器存放庫中的弱點掃描。
- 針對未加入網域主機的 Windows 工作負載使用群組管理的安全性帳戶。 (僅適用於 Windows Server。
容器安全性
- 藉由移除不必要的服務,強化主機和精靈環境。
- 將秘密從映像中保留出來,並只透過容器協調流程引擎加以掛接。
- 保護 Azure Container Registry 中支援弱點掃描和 RBAC 的映射。
- 使用容器的隔離,並避免以特殊許可權模式執行容器,以防止攻擊者在容器遭到入侵時呈報許可權。
成本最佳化
- 使用 Azure 定價計算器來估算體系架構中所使用的服務的成本。 Microsoft Azure Well-Architected Framework 中的成本優化一節會說明其他最佳做法。 如需詳細資訊,請參閱 定價詳細數據。
- 請考慮在實體計算機上實作超線程,以將成本優化,因為 AKS 計費單位是虛擬核心。
卓越營運
- 建立叢集精靈。 使用 Windows Admin Center 體驗簡化的布建和管理體驗。 在 Windows Admin Center 中建立叢集精靈 提供精靈驅動介面,引導您建立 Azure 本機實例。 [建立叢集精靈] 是一種取捨,可讓您輕鬆建立部署腳本,以控制跨多個部署的稽核和可重複性。 同樣地,Windows Admin Center 可簡化管理 Azure 本機 VM的程式。
- Azure Arc。與 Azure Arc 或一系列 Azure 服務整合,以提供額外的管理、維護和復原功能(例如 Azure 監視器和 Log Analytics)。
- GitOps。 使用自動化工具將組態套用至 Kubernetes 叢集,而不是手動設定 Kubernetes 元件,因為這些設定會簽入來源存放庫。 這個過程通常被稱為 GitOps,流行的 Kubernetes GitOps 解決方案包括 Flux 和 Argo CD。 在此架構中,我們建議使用以 Flux 為基礎的Microsoft提供的 GitOps 擴充功能。
- 已啟用 Azure Arc 的 開放式服務網格 (OSM) 。 輕量型、可延伸的雲端原生服務網格,可讓使用者針對高度動態微服務環境統一管理、協助保護及取得現成的可觀察性功能。
效能效益
- 使用 Azure 本機認證的硬體來改善應用程式運行時間和效能、簡化的管理與作業,以及降低總擁有成本。
- 瞭解 Azure 本機限制上的 AKS。 Microsoft支援 Azure Stack 上的 AKS 部署,每個叢集最多 8 部實體伺服器、8 個 Kubernetes 叢集和 200 部 VM。
- 在 Azure 本機上調整 AKS 取決於背景工作節點和目標叢集的數目。 若要正確維度背景工作節點的硬體,您必須預期目標叢集中的 Pod、容器和背景工作節點數目。 您應該確保至少有 15 個 azure 本機容量% 保留給計劃性和非計劃性失敗。 為了達到效能效率,請有效率地使用運算資源來滿足系統需求,並在需求變更和技術發展時維持該效率。 一般規則是,如果一個節點在維護期間脫機,或在非計劃性失敗期間,其餘節點可以有足夠的容量來管理增加的負載。
- 如果您要在每個目標叢集中執行許多 Kubernetes 服務,請考慮增加負載平衡器 VM 的大小。
- Azure 本機上的 AKS 會使用 Azure 本機放置邏輯,針對目標叢集中的每個節點集區散發背景工作節點。
- 規劃IP位址保留,以設定 AKS 主機、工作負載叢集、叢集 API 伺服器、Kubernetes Services 和應用程式服務。 Microsoft建議為 Azure 本機上的 AKS 部署保留至少 256 個 IP 位址。
- 請考慮實作在第 7 層運作的輸入控制器,並使用更智慧的規則來散發應用程式流量。
- 針對流量頻寬配置實作網路效能優化。
- 針對廣泛的工作負載使用圖形處理單位 (GPU) 加速。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- Lisa DenBeste |專案管理計劃管理員
- 肯尼·哈德 |專案管理人
- 邁克·科斯特西茨 |主要項目經理主管
- Meg Olsen |主要
- 內特沃特斯 |產品營銷經理
其他投稿人:
- 沃爾特·奧利弗 |資深項目經理
下一步
相關資源
- Azure 本機 上 AKS 的
網路架構