分享方式:


Azure Kubernetes Service (AKS) 叢集的 IP 位址規劃

本文提供 Azure Kubernetes Service (AKS) 叢集的 IP 位址規劃指導。

如需 IP 位址規劃個別 CNI 選項的特定指導,請參閱後續步驟一節,以取得外掛程式文件的連結。

子網路大小調整

您的 Azure VNet 子網路必須夠大,才能容納您的叢集,這取決於您使用的是重疊網路平面網路

重疊網路

使用重疊網路,例如 Azure CNI 重疊,您的子網路必須夠大,才能將 IP 指派給節點。 Pod 會從個別的私人 CIDR 範圍指派 IP,而且不需要 VNet IP。 您用於叢集的 VNet 子網路可以小於平面網路。

請務必確定您在私人 CIDR 範圍中配置足夠的空間,讓 Pod 能夠調整。 規劃 IP 位址範圍大小時,您應該計算 Pod 計數上限。 叢集中的每個節點都會為 Pod 指派 /24 (256 個 IP 位址) 子網路。 您應該規劃重疊網路子網路,以容納您預期要執行的節點數目上限。

平面網路

平面網路,例如 Azure CNI Pod 子網路,需要足夠大的子網路來容納節點 Pod。 由於節點和 Pod 會從 VNet 接收 IP,因此您必須規劃預期要執行的節點和 Pod 數目上限。 Azure CNI Pod 子網路會針對您的節點使用子網路,並針對 Pod 使用個別的子網路,因此您必須針對這兩者進行規劃。

IP 位址大小調整

升級和調整考量

規劃 AKS 叢集的 IP 位址時,您應該考慮升級和調整作業所需的 IP 位址數目。 如果設定只支援固定節點數目的 IP 位址範圍,就無法升級或調整您的叢集。

當您升級 AKS 叢集時,會部署新的節點到叢集中。 服務和工作負載會開始在新的節點上執行,並移除叢集中較舊的節點。 此輪流升級程序需要至少一個額外的 IP 位址區塊以供使用。 您的節點計數會是 n + 1,其中 n 是叢集中的節點數目。

當您調整 AKS 叢集時,會部署新的節點到叢集中。 服務和工作負載會開始在新的節點上執行。 您的 IP 位址範圍必須將您可能想要擴大的節點數和您的叢集可支援的 Pod 數目納入考量。 至少應包含升級作業的一個額外節點,或 [自定義節點激增升級] 選項所設定的節點數目。 因此您的節點計數為 n + number-of-additional-scaled-nodes-you-anticipate + max surge

如果您使用 Azure CNI Pod 子網路並預期您的節點會執行最大數目的 Pod,且定期終結及部署 Pod 時,也應該考慮為每個節點提供額外的 IP 位址。 刪除服務並釋放其 IP 位址可能會有幾秒鐘的延遲,才能部署新服務並取得位址。 額外的 IP 位址必須考慮這種可能性。

適用於 AKS 叢集的 IP 位址方案會由一個虛擬網路、至少一個適用於節點和 Pod 的子網路,以及一個 Kubernetes 服務位址範圍所組成。

Azure 資源 位址範圍 限制和調整大小
Azure 虛擬網路 大小上限 /8。 65,536 個已設定的 IP 位址限制。 針對例外狀況,請參閱 Azure CNI Pod 子網路靜態區塊配置 網路內的重疊位址空間可能會導致問題。
子網路 必須大到足以容納節點、Pod,以及您叢集中的所有 Kubernetes 和 Azure 資源。 例如,如果您部署內部 Azure Load Balancer,其前端 IP 會從叢集子網路配置,而不是從公用 IP 配置。 子網路大小也應該考量升級作業和未來的調整需求。

使用下列方程式來計算最小子網大小,包括升級作業的額外節點:例如 50 節點叢集: (number of nodes + max surge nodes) + ((number of nodes + max surge nodes) * maximum pods per node that you configure)

(/21 或

更大) 例如 50 節點叢集,準備相應增加額外 10 個節點,且預設最大激增為 1 個節點: (51) + (51 * 30 (default)) = 1,581 (61) + (61 * 30 (default)) = 1,891 (/21 或更大)

如果您未在建立叢集時指定每個節點的最大 Pod 數目,則 每個節點的 Pod 數目上限設定為 30。 IP 位址所需的最小數目是根據該值。 如果您以不同的最大值來計算最小 IP 位址需求,請參閱每個節點的最大 Pod 數目,在您部署叢集時設定此值。

Kubernetes 服務位址範圍 此虛擬網路上或連線到此虛擬網路的任何網路元素不得使用此範圍。 服務位址 CIDR 必須小於 /12。 您可以在不同 AKS 叢集中重複使用此範圍。
Kubernetes DNS 服務 IP 位址 叢集服務探索所使用 Kubernetes 服務位址範圍內的 IP 位址。 請勿使用您位址範圍中的第一個 IP 位址。 您子網路範圍內的第一個位址會用於 kubernetes.default.svc.cluster.local 位址。

每個節點的最大 Pod 數目

AKS 叢集中每個節點的最大 Pod 數目為 250 個。 每個節點「預設」的最大 Pod 數目,會根據 kubenetAzure CNI 網路以及叢集部署的方法而有所不同。

CNI 預設最大 Pod 可在部署時設定
Azure CNI 重疊 250 是 (最多 250 個)
Azure CNI Pod 子網路 110 是 (最多 250 個)
Azure CNI (舊版) 30 是 (最多 250 個)
Kubenet 110 是 (最多 250 個)

設定叢集中每個節點的最大 Pod 數目

您可以在叢集部署期間或新增節點集區時,設定每個節點的最大 Pod 數目。 您可以將每個節點值的最大 Pod 設定為 250。

系統會為每個節點的最大 Pod 數目強制執行最小值,以確保提供空間給對叢集健康情況至關重要的系統 Pod。 只有當每個節點集區的設定能夠容納至少 30 個 Pod 時,可針對每個節點的最大 Pod 數目設定的最小值才會是 10。 舉例來說,如果將每個節點的最大 Pod 數目設定為最小值 10,則每個個別節點集區均須包含至少三個節點。 此需求亦適用於每個新建立的節點集區,因此如果將 10 定義為每個節點的最大 Pod 數目,則每個新增的節點集區均須包含至少三個節點。

網路 最小值 最大值
Azure CNI 10 250
Kubenet 10 250

注意

前一表格中的最小值完全由 AKS 服務強制執行。 您無法將 maxPods 的值設定為低於顯示的最小值,因為這樣做會導致叢集無法啟動。

新叢集

當您使用下列其中一種方法建立新的叢集時,您可以定義每個節點的最大 Pod 數目:

  • Azure CLI:當您使用 az aks create 命令部署叢集時,請指定 --max-pods 引數。
  • Azure Resource Manager 範本:當您使用 Azure Resource Manager 範本部署叢集時,請指定 [ManagedClusterAgentPoolProfile] 物件中的 maxPods 屬性。
  • Azure 入口網站:在建立叢集或新增節點集區時,變更節點集區設定中的 Max pods per node 欄位。

現有叢集

當您建立新的節點集區時,您可以定義每個節點的最大 Pod 數目。 如果您需要在現有叢集上增加 maxPods 設定,請使用新的所需 maxPods 計數來新增節點集區。 將 Pod 移轉至新集區後,請刪除較舊的節點集區。

後續步驟