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 叢集的整個生命週期中保持一致。 Azure Stack HCI 23H2 上的 AKS 目前不支援軟體定義的虛擬網路和 SDN 相關功能。
若要使用 AKS Arc 叢集建立作業的邏輯網路,需要下列參數:
邏輯網路參數 | 描述 | 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 叢集部署負載平衡器:
- 使用 Azure Arc 擴充功能部署 MetalLB 負載平衡器。
- 攜帶您自己的第三方負載平衡器。
無論您是選擇 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 叢集各一個。 | 保留與 Arc VM 邏輯網路相同子網中控制平面 IP 的 IP 位址,但位於指定的 IP 集區外部。 |
負載平衡器 IP | 保留的IP位址數目取決於您的應用程式部署模型。 作為起點,您可以為每個 Kubernetes 服務保留一個 IP 位址。 | 保留與 Arc VM 邏輯網路相同子網中控制平面 IP 的 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 個背景工作節點。
- 前端 UI 的 3 個實例(埠 443)。
- 後端資料庫的1個實例(埠80)。
根據上表,她必須在子網中保留總共 19 個 IP 位址:
- 叢集 A 中 AKS Arc 節點 VM 的 8 個 IP 位址(每個 K8s 節點 VM 一個 IP)。
- 叢集 B 中 AKS Arc 節點 VM 的 4 個 IP 位址(每個 K8s 節點 VM 一個 IP)。
- 2 個用於執行 AKS Arc 升級作業的 IP 位址(每個 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 和內部基礎結構 (Arc Resource Bridge) 會使用這些 IP 進行 Arc VM 管理和 AKS Arc。如果您的管理網路提供與 Arc Resource Bridge 相關 Azure Stack HCI 服務的 IP 位址與您用來建立 AKS 叢集的邏輯網路位於不同的 VLAN 上,您必須確定已開啟下列埠,才能成功建立及操作 AKS 叢集。
目的地連接埠 | Destination | 來源 | 描述 | 跨 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 網路需求。
注意
如果您要部署較舊的 Azure Stack HCI 版本,例如 2402 和更早版本,您也必須允許 gcr.io 和 storage.googleapis.com URL。 這些 URL 已從最新的 AKS Arc 版本中移除。
URL | 連接埠 | 服務 | 備註 |
---|---|---|---|
https://mcr.microsoft.com *.data.mcr.microsoft.com azurearcfork8s.azurecr.io linuxgeneva-microsoft.azurecr.io pipelineagent.azurecr.io ecpacr.azurecr.io https://azurearcfork8sdev.azurecr.io https://hybridaks.azurecr.io aszk8snetworking.azurecr.io |
443 | AKS Arc | 用於官方Microsoft成品,例如容器映像。 |
docker.io |
443 | AKS Arc | 用於 Kubernetes 官方成品,例如容器基底映像。 |
hybridaksstorage.z13.web.core.windows.net |
443 | AKS Arc | 裝載於 Azure 儲存體 中的 AKSHCI 靜態網站。 |
*.blob.core.windows.net *.dl.delivery.mp.microsoft.com *.do.dsp.mp.microsoft.com |
443 | AKS Arc | 用於 AKS Arc VHD 映射下載和更新。 |
*.prod.do.dsp.mp.microsoft.com |
443 | AKS Arc | 用於 AKS Arc VHD 映射下載和更新。 |
*.login.microsoft.com |
443 | Azure | 需要擷取和更新 Azure Resource Manager 令牌才能登入 Azure。 |
https://*.his.arc.azure.com |
443 | 已啟用 Azure Arc 的 K8s | 用於 Arc 代理程式身分識別和訪問控制。 |
https://*.dp.kubernetesconfiguration.azure.com |
443 | 已啟用 Azure Arc 的 K8s | 用於 Azure Arc 設定。 |
https://*.servicebus.windows.net |
443 | 已啟用 Azure Arc 的 K8s | 用來安全地連線到已啟用 Azure Arc 的 Kubernetes 叢集,而不需要在防火牆上啟用任何輸入埠。 |
https://guestnotificationservice.azure.com |
443 | 已啟用 Azure Arc 的 K8s | 用於來賓通知作業。 |
sts.windows.net |
443 | 已啟用 Azure Arc 的 K8s | 針對叢集聯機和自定義位置型案例。 |
https://*.dp.prod.appliances.azure.com |
443 | Arc 資源網橋 | 用於資源網橋的數據平面作業(設備)。 |
*.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 https://adhs.events.data.microsoft.com https://v20.events.data.microsoft.com |
443 | 計量和健康情況監視 | 用於計量和監視遙測流量。 |
pypi.org *.pypi.org files.pythonhosted.org |
443 | Az CLI | 用來下載 Az CLI 和 Az CLI 延伸模組。 |
aka.ms |
443 | Azure Stack HCI | Azure Stack HCI 相關下載的必要專案。 |
raw.githubusercontent.com |
443 | GitHub | 用於 GitHub。 |
www.microsoft.com |
80 | Microsoft官方網站。 | Microsoft官方網站。 |