共用方式為


IP 位址規劃需求

適用於:Azure 本機版本 23H2

Azure Arc 所啟用 AKS 的 IP 位址規劃牽涉到設計支援應用程式、節點集區、Pod 網路、服務通訊和外部存取的網路。 本文將逐步引導您完成有效IP位址規劃的一些重要考慮,以及部署生產環境中 AKS 所需的IP位址數目下限。 閱讀本文之前, 請參閱 AKS 網路概念和需求

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

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

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

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

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

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

根據上表,Jane 必須在 Jane 的子網中保留總計 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 版本升級和控制平面IP 保留16個IP位址 透過 Azure 本機邏輯網路中 IP 集區進行此保留。
負載平衡器 IP 3 個 Kubernetes 服務的 IP 位址,適用於 Jane 的投票應用程式。 當您在叢集 A 上安裝負載平衡器時,會使用這些 IP 位址。您可以使用 MetalLB Arc 擴充功能,或自備第三方負載平衡器。 請確定此IP位於與Arc邏輯網路相同的子網中,但在Arc VM邏輯網路中定義的IP集區之外。

Kubernetes 叢集和應用程式的IP位址保留範例 CLI 命令

本節說明 Jane 針對她的案例執行的命令集。 首先,使用至少 16 個 IP 位址的 IP 集區建立邏輯網路。 我們已建立具有 20 個 IP 位址的 IP 集區,以提供在第 N 天調整的選項。如需邏輯網路中參數選項的詳細資訊,請參閱 az stack-hci-vm network lnet create

$ipPoolStart = "10.220.32.18"
$ipPoolEnd = "10.220.32.37"
az stack-hci-vm network lnet create --subscription $subscription --resource-group $resource_group --custom-location $customLocationID --name $lnetName --vm-switch-name $vmSwitchName --ip-allocation-method "Static" --address-prefixes $addressPrefixes --gateway $gateway --dns-servers $dnsServers --ip-pool-start $ipPoolStart --ip-pool-end $ipPoolEnd

接下來,使用先前的邏輯網路建立 AKS Arc 叢集:

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $lnetName --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys

現在,您可以在與 Arc VM 邏輯網路相同的子網中,使用 3 個 IP 位址的 IP 集區來啟用 MetalLB 負載平衡器。 如果您的應用程式需要增加,您可以稍後新增更多IP集區。 如需詳細需求,請參閱 MetalLB Arc 延伸模組概觀

az k8s-runtime load-balancer create --load-balancer-name $lbName --resource-uri subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.Kubernetes/connectedClusters/metallb-demo --addresses 10.220.32.47-10.220.32.49 --advertise-mode ARP

AKS 叢集和 Arc VM 的 LNET 考慮

Azure 本機上的邏輯網路由 AKS 叢集和 Arc VM 使用。 您可以使用下列 2 種方式之一來設定邏輯網路:

  • 在 AKS 與 Arc VM 之間共用邏輯網路。
  • 定義 AKS 叢集和 Arc VM 的個別邏輯網路。

在 Azure 本機上的 AKS 與 Arc VM 之間共用邏輯網路,可提供簡化通訊、節省成本以及簡化網路管理的優點。 不過,此方法也會帶來潛在的挑戰,例如資源爭用、安全性風險,以及疑難解答的複雜性。

準則 共用邏輯網路 定義個別的邏輯網路
設定複雜度 使用單一網路進行更簡單的設定,減少設定複雜度。 更複雜的設定,因為您需要為 VM 和 AKS 叢集設定多個邏輯網路。
延展性 Arc VM 和 AKS 叢集共用網路資源時的潛在延展性限制。 因為網路資源會分開,而且可以獨立調整,因此更具可調整性。
網路原則管理 使用一組網路原則更容易管理,但更難隔離工作負載。 更容易隔離工作負載,因為每個邏輯網路可以套用個別的原則。
安全性考量 如果未適當分割,則增加跨通訊弱點的風險。 更好的安全性,因為每個網路都可以更嚴格地分割和隔離。
網路失敗的影響 共用網路中失敗可同時影響 AKS 和 Arc VM。 一個網路中失敗只會影響該網路內的工作負載,進而降低整體風險。

Pod CIDR 和服務 CIDR 的 IP 位址範圍配置

本節描述 Kubernetes 用於叢集內 Pod 和服務通訊的 IP 位址範圍。 這些IP位址範圍會在AKS叢集建立程式期間定義,並用來將唯一IP位址指派給叢集內的Pod和服務。

Pod 網路 CIDR

Pod 網路 CIDR 是 Kubernetes 用來將唯一 IP 位址指派給 Kubernetes 叢集中執行的個別 Pod 的 IP 位址範圍。 每個 Pod 都會在此範圍內取得自己的 IP 位址,讓 Pod 彼此通訊,並與叢集內的服務通訊。 在 AKS 中,Pod IP 位址會透過 VXLAN 模式的 Calico CNI 指派。 Calico VXLAN 有助於建立 重疊網路,其中 Pod 的 IP 位址(來自 Pod 網路 CIDR)會虛擬化並透過實體網路進行通道。 在此模式中,每個 Pod 都會從 Pod 網路 CIDR 指派 IP 位址,但實體網路上無法直接路由傳送此 IP 位址。 相反地,它會封裝在網路封包內,並透過基礎實體網路傳送至另一個節點上的目的地 Pod。

AKS 為 Pod 網路 CIDR 提供 10.244.0.0/16 的預設值。 AKS 支援 Pod 網路 CIDR 的自訂。 您可以在建立 AKS 叢集時使用 --pod-cidr 參數來設定自己的值。 請確定 CIDR IP 範圍夠大,足以容納每個節點和跨 Kubernetes 叢集的 Pod 數目上限。

服務網路 CIDR

服務網路 CIDR 是保留給 Kubernetes 服務的 IP 位址範圍,例如叢集中的 LoadBalancers、ClusterIP 和 NodePort。 Kubernetes 支援下列服務類型:

  • ClusterIP:預設服務類型,這會公開叢集內的服務。 從服務網路 CIDR 指派的 IP 只能在 Kubernetes 叢集中存取。
  • NodePort:在每個節點 IP 位址的特定埠上公開服務。 ClusterIP 仍會在內部使用,但外部存取是透過節點IP和特定埠。
  • LoadBalancer:此類型會建立雲端提供者管理的負載平衡器,並在外部公開服務。 雲端提供者通常會管理外部IP指派,而內部ClusterIP會保留在服務網路 CIDR 內。

AKS 為服務網路 CIDR 提供 10.96.0.0/12 的預設值。 AKS 目前不支援服務網路 CIDR 的自定義。

下一步

在 Azure 本機 23H2 版上建立 Kubernetes 叢集的邏輯網路