由 Azure Arc 網路需求啟用的 AKS

適用於:Azure Stack HCI 版本 23H2

本文介紹 Azure Arc 所啟用 AKS 中 VM 和應用程式的核心網路概念。本文也說明建立 Kubernetes 叢集所需的網路必要條件。 我們建議您與網路管理員合作,提供及設定部署Arc所啟用 AKS 所需的網路參數。

在此概念性文章中,會介紹下列重要元件。 這些元件需要靜態 IP 位址,AKS Arc 叢集和應用程式才能成功建立及操作:

  • AKS 叢集 VM
  • AKS 控制平面IP
  • 容器化應用程式的負載平衡器

AKS 叢集 VM 的網路功能

Kubernetes 節點會部署為 Arc 所啟用 AKS 中的特製化虛擬機。這些 VM 會設定 IP 位址,以啟用 Kubernetes 節點之間的通訊。 AKS Arc 會使用 Azure Stack HCI 邏輯網路,為 Kubernetes 叢集的基礎 VM 提供 IP 位址和網路功能。 如需邏輯網路的詳細資訊,請參閱 Azure Stack HCI 的邏輯網路。 您必須規劃在 Azure Stack HCI 環境中為每個 AKS 叢集節點 VM 保留一個 IP 位址。

注意

靜態IP是唯一支援將IP位址指派給AKS Arc VM的模式。 這是因為 Kubernetes 需要指派給 Kubernetes 節點的 IP 位址在整個 Kubernetes 叢集生命週期中保持一致。

若要使用 AKS Arc 叢集建立作業的邏輯網路,需要下列參數:

邏輯網路參數 Description AKS Arc 叢集的必要參數
--address-prefixes 網路的 AddressPrefix。 目前僅支援 1 個地址前綴。 使用方式: --address-prefixes "10.220.32.16/24" 支援
--dns-servers 以空格分隔的 DNS 伺服器 IP 位址清單。 使用方式: --dns-servers 10.220.32.16 10.220.32.17 支援
--gateway 閘道。 閘道IP位址必須位於位址前綴的範圍內。 使用方式: --gateway 10.220.32.16 支援
--ip-allocation-method IP 位址配置方法。 支援的值為 「Static」。。 使用方式: --ip-allocation-method "Static" 支援
--ip-pool-start IP 集區的起始IP位址。 地址必須位於位址前綴的範圍內。 使用方式: --ip-pool-start "10.220.32.18" 支援
--ip-pool-end IP 集區的結束IP位址。 地址必須位於位址前綴的範圍內。 使用方式: --ip-pool-end "10.220.32.38" 支援
--vm-switch-name VM 交換器的名稱。 使用方式: --vm-switch-name "vm-switch-01" 支援

控制平面IP

Kubernetes 會使用控制平面來確保 Kubernetes 叢集中的每個元件都維持在所需的狀態。 控制平面也會管理和維護保存容器化應用程式的背景工作節點。 Arc 啟用的 AKS 會部署 KubeVIP 負載平衡器,以確保 Kubernetes 控制平面的 API 伺服器 IP 位址隨時可用。 此 KubeVIP 實例需要單一不可變的「控制平面 IP 位址」才能正常運作。

注意

控制平面IP是建立 Kubernetes 叢集的必要參數。 您必須確定 Kubernetes 叢集的控制平面 IP 位址不會與任何其他專案重疊,包括 Arc VM 邏輯網路、基礎結構網路 IP、負載平衡器等。控制平面IP也必須在邏輯網路的位址前綴範圍內,但位於IP集區外部。 這是因為IP集區僅用於VM,而且如果您從控制平面的IP集區中選擇IP位址,可能會產生IP位址衝突。 重疊的IP位址可能會導致AKS叢集和使用IP位址的任何其他位置發生非預期的失敗。 您必須規劃在環境中為每個 Kubernetes 叢集保留一個 IP 位址。

容器化應用程式的負載平衡器IP

負載平衡器的主要目的是將流量分散到 Kubernetes 叢集中的多個節點。 此負載平衡有助於防止停機並改善應用程式的整體效能。 AKS 支援下列選項,為您的 Kubernetes 叢集部署負載平衡器:

無論您選擇 [MetalLB Arc] 延伸模組或自備負載平衡器,都必須提供一組 IP 位址給負載平衡器服務。 下列選項可供您選擇:

  • 從與 AKS Arc VM 相同的子網為您的服務提供 IP 位址。
  • 如果您的應用程式需要外部負載平衡,請使用不同的網路和IP位址清單。

無論您選擇的選項為何,都必須確定配置給負載平衡器的IP位址不會與邏輯網路中的IP位址衝突,或 Kubernetes 叢集的控制平面IP衝突。 衝突的IP位址可能會導致AKS部署和應用程式中未預期的失敗。

Kubernetes 叢集和應用程式的簡單IP位址規劃

在下列案例逐步解說中,您會為 Kubernetes 叢集和服務保留來自單一網路的 IP 位址。 這是IP位址指派的最簡單簡單案例。

IP 位址需求 IP 位址數目下限 進行這項保留的方式和位置
AKS Arc VM IP 為 Kubernetes 叢集中的每個背景工作角色節點保留一個 IP 位址。 例如,如果您想要在每個節點集區中建立具有 3 個節點的 3 個節點集區,您的 IP 集區中必須有 9 個 IP 位址。 透過 Arc VM 邏輯網路中 IP 集區保留 AKS Arc VM 的 IP 位址。
AKS Arc K8s 版本升級IP 因為 AKS Arc 會執行滾動升級,所以針對 Kubernetes 版本升級作業的每個 AKS Arc 叢集保留一個 IP 位址。 透過 Arc VM 邏輯網路中 IP 集區,保留 K8s 版本升級作業的 IP 位址。
控制平面IP 為您的環境中每個 Kubernetes 叢集保留一個 IP 位址。 例如,如果您想要總共建立5個叢集,請保留5個IP位址,每個 Kubernetes 叢集各保留一個。 保留IP位址給與Arc VM邏輯網路位於相同子網中的控制平面IP,但位於指定的IP集區外部。
負載平衡器 IP 保留的IP位址數目取決於您的應用程式部署模型。 作為起點,您可以為每個 Kubernetes 服務保留一個 IP 位址。 保留IP位址給與Arc VM邏輯網路位於相同子網中的控制平面IP,但位於指定的IP集區外部。

Kubernetes 叢集和應用程式的IP位址保留範例逐步解說

Jane 是 IT 系統管理員,剛從 Azure Arc 啟用的 AKS 開始。她想要在 Azure Stack HCI 叢集上部署兩個 Kubernetes 叢集:Kubernetes 叢集 A 和 Kubernetes 叢集 B。 她也想要在叢集 A 之上執行投票應用程式。此應用程式有三個在兩個叢集和一個後端資料庫實例上執行的前端 UI 實例。 她所有的 AKS 叢集和服務都在單一網路中執行,且具有單一子網。

  • Kubernetes 叢集 A 有 3 個控制平面節點和 5 個背景工作節點。
  • Kubernetes 叢集 B 有 1 個控制平面節點和 3 個背景工作節點。
  • 3 個前端 UI 實例, (埠 443) 。
  • 後端資料庫的 1 個實例 (埠 80) 。

根據上表,她必須在子網中保留總計 19 個 IP 位址:

  • 叢集中 AKS Arc 節點 VM (每個 K8s 節點 VM) 一個 IP 的 8 個 IP 位址。
  • 叢集中 AKS Arc 節點 VM 的 4 個 IP 位址, (每個 K8s 節點 VM) 一個 IP。
  • 2 個 IP 位址,用於執行 AKS Arc 升級作業, (每個 AKS Arc 叢集) 一個 IP 位址。
  • AKS Arc 控制平面的 2 個 IP 位址 (每個 AKS Arc 叢集一個 IP 位址)
  • Kubernetes 服務的 3 個 IP 位址 (每個前端 UI 實例的一個 IP 位址,因為它們全都使用相同的埠。只要後端資料庫使用不同的埠) ,就可以使用三個IP位址中的任何一個。

繼續進行此範例,並將它新增至下表,您會收到:

參數 IP 位址數目 如何和何處進行此保留
AKS Arc VM 和 K8s 版本升級 保留14個IP位址 透過 Azure Stack HCI 邏輯網路中 IP 集區進行此保留。
控制平面IP 保留 2 個 IP 位址,一個用於 AKS Arc 叢集 controlPlaneIP使用 參數來傳遞控制平面IP的IP位址。 請確定此IP位於與Arc邏輯網路相同的子網中,但在Arc邏輯網路中定義的IP集區之外。
負載平衡器 IP 3 個 Kubernetes 服務的 IP 位址,適用於 Jane 的投票應用程式。 當您在叢集 A 上安裝負載平衡器時,會使用這些 IP 位址。您可以使用 MetalLB Arc 延伸模組,或自備第三方負載平衡器。 請確定此IP位於與Arc邏輯網路相同的子網中,但在Arc VM邏輯網路中定義的IP集區之外。

Proxy 設定

AKS 中的 Proxy 設定繼承自基礎結構系統。 尚未支援為 Kubernetes 叢集設定個別 Proxy 設定和變更 Proxy 設定的功能。

跨 VLAN 需求 & 網路埠

當您部署 Azure Stack HCI 時,您會在 管理網路的子網上配置至少六個靜態 IP 位址的連續區塊,省略實體伺服器已使用的位址。 Azure Stack HCI 和內部基礎結構會使用這些IP (Arc Resource Bridge) ,以進行Arc VM管理和 AKS Arc。如果您的管理網路提供與 Arc 資源網橋相關 Azure Stack HCI 服務的 IP 位址與您用來建立 AKS 叢集的邏輯網路位於不同的 VLAN 上,您必須確定已開啟下列埠,才能成功建立及操作 AKS 叢集。

目的地連接埠 目的地 來源 描述 跨 VLAN 網路功能注意事項
22 用於 AKS Arc VM 的邏輯網路 管理網路中IP位址 收集記錄以進行疑難解答的必要專案。 如果您使用個別的 VLAN,則用於 Azure Stack HCI 和 Arc 資源網橋的管理網路中 IP 位址必須存取此埠上的 AKS Arc 叢集 VM。
6443 用於 AKS Arc VM 的邏輯網路 管理網路中IP位址 需要與 Kubernetes API 通訊。 如果您使用個別的 VLAN,則用於 Azure Stack HCI 和 Arc 資源網橋的管理網路中 IP 位址必須存取此埠上的 AKS Arc 叢集 VM。
55000 管理網路中IP位址 用於 AKS Arc VM 的邏輯網路 雲端代理程式 gRPC 伺服器 如果您使用個別的 VLAN,AKS Arc VM 必須存取此埠上用於雲端代理程式 IP 和叢集 IP 的管理網路中 IP 位址。
65000 管理網路中IP位址 用於 AKS Arc VM 的邏輯網路 雲端代理程式 gRPC 驗證 如果您使用個別的 VLAN,AKS Arc VM 必須存取此埠上用於雲端代理程式 IP 和叢集 IP 的管理網路中 IP 位址。

防火牆 URL 例外狀況

如需 Azure Arc 防火牆/Proxy URL 允許清單的相關信息,請參閱 Azure Arc 資源網橋網路需求Azure Stack HCI 23H2 網路需求

針對 Kubernetes 叢集的部署和作業,必須可從部署中的所有實體節點和 AKS Arc VM 連線到下列 URL。 請確定防火牆設定中允許這些 URL:

URL 連接埠 服務 備註
https://mcr.microsoft.com 443 Microsoft 容器登錄 用於官方 Microsoft 成品,例如容器映像。
https://*.his.arc.azure.com 443 Azure Arc 身分識別服務 用於身分識別和訪問控制。
https://*.dp.kubernetesconfiguration.azure.com 443 Kubernetes 用於 Azure Arc 設定。
https://*.servicebus.windows.net 443 叢集連線 用來安全地連線到已啟用 Azure Arc 的 Kubernetes 叢集,而不需要在防火牆上啟用任何輸入埠。
https://guestnotificationservice.azure.com 443 通知服務 用於客體通知作業。
https://*.dp.prod.appliances.azure.com 443 資料平面服務 用於資源網橋 (設備) 的數據平面作業。
*.data.mcr.microsoft.com
azurearcfork8s.azurecr.io
linuxgeneva-microsoft.azurecr.io
pipelineagent.azurecr.io
ecpacr.azurecr.io
443 下載代理程式 用來下載映像和代理程式。
*.prod.microsoftmetrics.com
*.prod.hot.ingestion.msftcloudes.com
dc.services.visualstudio.com
*.prod.warm.ingest.monitor.core.windows.net
gcs.prod.monitoring.core.windows.net
443 計量和狀況監控 用於計量和監視遙測流量。
*.blob.core.windows.net
*.dl.delivery.mp.microsoft.com
*.do.dsp.mp.microsoft.com
443 TCP 用來下載資源網橋 (設備) 映像。
https://azurearcfork8sdev.azurecr.io 443 Kubernetes 用來下載適用於 Kubernetes 的 Azure Arc 容器映像。
https://adhs.events.data.microsoft.com 443 遙測 ADHS 是一項遙測服務,會在設備/操作者 OS 內執行。 定期用來從控制平面節點傳送必要的診斷資料到 Microsoft。 當遙測即將離開擷取器時使用,這表示任何 Kubernetes 控制平面。
https://v20.events.data.microsoft.com 443 遙測 定期用來從 Windows Server 主機將必要的診斷數據傳送給 Microsoft。
gcr.io 443 Google 容器登錄 用於 Kubernetes 官方成品,例如容器基底映像。
pypi.org 443 Python 套件 驗證 Kubernetes 和 Python 版本。
*.pypi.org 443 Python 套件 驗證 Kubernetes 和 Python 版本。
https://hybridaks.azurecr.io 443 容器映像 需要才能存取 HybridAKS 操作員映像。
aka.ms 443 az extensions 下載 Azure CLI 擴充功能的必要專案,例如 aksarcconnectedk8s
*.login.microsoft.com 443 Azure 擷取和更新 Azure Resource Manager 權杖的必要項目。
sts.windows.net 443 Azure Arc 針對叢集聯機和自定義位置型案例。
hybridaksstorage.z13.web.core.windows.net 443 Azure Stack HCI 裝載在 Azure 記憶體中的 AKSHCI 靜態網站。
raw.githubusercontent.com 443 GitHub 用於 GitHub。
www.microsoft.com 80 Microsoft 官方網站。 Microsoft 官方網站。
*.prod.do.dsp.mp.microsoft.com 443 Microsoft Update 資源網橋 (設備) 映射下載。
files.pythonhosted.org 443 Python 套件 Python 套件。

下一步

Create Azure Stack HCI 23H2 上 Kubernetes 叢集的邏輯網路