GKE IP 位址使用率深入分析資訊

本頁面說明 Google Kubernetes Engine (GKE) IP 位址使用率的 Network Analyzer 洞察資料。如要瞭解所有洞察類型,請參閱「洞察群組和類型」。

在 Recommender API 中查看洞察資料

如要在 gcloud CLI 或 Recommender API 中查看這些洞察資料,請使用下列洞察資料類型:

  • google.networkanalyzer.container.ipAddressInsight

您需要具備下列權限:

  • recommender.networkAnalyzerGkeIpAddressInsights.list
  • recommender.networkAnalyzerGkeIpAddressInsights.get

如要進一步瞭解如何使用 Recommender API 取得 Network Analyzer 深入分析資料,請參閱「使用 Recommender CLI 和 API」。

分配的 GKE Pod 範圍過多

這項洞察資料表示,GKE 叢集 Pod 位址範圍的 IP 位址使用率高於 80%。GKE Pod 的 IP 位址分配政策會因叢集是設為虛擬私有雲原生叢集或路由叢集而異。

路徑導向叢集

在 GKE 中,叢集可根據將流量從一個 Pod 轉送至另一個 Pod 的方式來區分叢集。使用 Google Cloud 路徑的叢集稱為「路徑導向叢集」。詳情請參閱「建立路徑導向叢集」。

路徑導向叢集擁有一系列用於 Pod 和服務的 IP 位址。即使該範圍用於 Pod 和服務,它也稱為「Pod 位址範圍」

Pod 位址範圍的最後一個 /20 是用於服務。一個 /20 範圍有 212 = 4096 個位址。因此,4096 位址會用於服務,其餘範圍則用於 Pod。

Pod 位址範圍的每個節點都有一個 /24 範圍的 Pod IP 位址。一個 /24 範圍有 28 = 256 個位址。請注意,Pod 位址範圍中的 4096 位址是用於服務。Pod 位址範圍的剩餘部分用於 Pod,並且必須夠大以容納節點數 x 256 個位址。

Pod 位址範圍的分配比率計算方式如下:

$\frac{\text {GKE 節點數} \times {256}}{\text {Pod 位址範圍大小}-{4096}}$

舉例來說,假設您計劃建立 900 節點叢集。那麼您需要 900 x 256 = 230,400 的 Pod 位址。現在假設您有一個 /14 Pod 位址範圍。一個 /14 範圍有 218 = 262,144 個位址。減去用於服務的 4096 位址,可得到 258,048,足以容納 900 節點。

虛擬私人雲端原生叢集

在 GKE 中,叢集可根據將流量從一個 Pod 轉送至另一個 Pod 的方式來區分叢集。使用別名 IP 位址範圍的叢集稱為虛擬私有雲端原生叢集。詳情請參閱「虛擬私有雲原生叢集」。

在虛擬私有雲原生叢集中建立節點集區時,您需要選取次要 IP 位址範圍,為 GKE Pod 分配 IP。不同的節點集區可以使用不同的次要範圍來分配 Pod IP 位址。詳情請參閱多 Pod CIDR。Network Analyzer 會為用於為特定叢集分配 Pod IP 位址的每個次要 IP 位址範圍,計算分配比率。如果整體分配比率超過 80%,您就會收到高使用率的洞察資料。

單一次要 IP 位址範圍的分配比率計算方式如下:

$\frac{\text {IP addresses from the secondary range allocated to nodes}}{\text {Secondary range size}}$

舉例來說,/24 次要 Pod 範圍可容納 256 Pod。如果只有 1 節點搭配預設 max_pods_per_node11016 Pod 執行,則比率會顯示 100% (256/256),而非 6.25% (16/256),因為即使未使用 240 Pod IP 位址,但仍屬於這個節點。只有在有 256 個未使用的 Pod IP 位址時,才能成功建立其他新節點。

整體分配比例的計算方式如下:

$\frac{\text {用於分配 Pod IP 位址的所有次要 IP 位址範圍中已分配的 IP 位址總和}{\text {用於分配 Pod IP 位址的次要 IP 位址範圍大小總和}}$

舉例來說,如果預設 Pod IP 位址和額外的 Pod IPv4 位址範圍設為 /22,且有 2 個節點集區,則一個節點集區會使用預設 Pod IP 位址範圍,並具有 3 個節點,而第二個節點集區會使用額外的 Pod IP 位址範圍,並具有 3 個節點,預設 Pod 數量上限設為 110。Kubernetes 會將 /24 CIDR 範圍指派給叢集中的節點。分配 6 個節點和 /24 CIDR 範圍後,總共有 256 * 6 = 1536 個 IP 位址。這是兩個 Pod IP 位址範圍 (1024 * 2 = 2048) 中可用的 IP 位址總數的 75%。

請注意,如果次要 IP 位址在不同叢集之間共用,洞察資料會顯示所有叢集的匯總總值。如要查看單一叢集的 IP 範圍使用率,您可以執行 gcloud container cluster describe CLUSTER_NAME,查看每個次要 IP 位址的使用率狀態。將 CLUSTER_NAME 替換為叢集名稱。

建議

GKE Pod 範圍分配會限制自動調度資源功能

這項洞察資料表示叢集的 Pod IP 位址範圍沒有足夠的位址,無法在所有節點集區中建立最大節點數。洞察詳細資料頁面包含一張表格,其中列出目前使用的 Pod IP 位址數量,以及每個 GKE 叢集 Pod IP 位址範圍的 Pod IP 位址數量上限。

當 IP 位址使用率值超過 100%,Network Analyzer 就會產生這項洞察資料。

如果叢集中的 Pod IP 位址範圍內,所需的 Pod IP 位址數量超過叢集中的節點數上限,則全自動調度 IP 位址使用率值會超過 100%。叢集中的節點數量上限,是叢集內每個節點集區的節點數量上限總和 (maxNodeCount)。

系統會使用 高 GKE Pod 範圍分配中的公式計算完全自動調度的 IP 位址使用率值。

路徑導向叢集

當 Pod 位址範圍的分配比率超過 100%,且所有節點集區都已完全自動調整時,系統就會產生這項洞察資料。由於缺少 IP 位址空間,因此不會建立 GKE 節點。

虛擬私人雲端原生叢集

如果用於分配 Pod IP 位址的任何次要 IP 位址範圍沒有足夠的未分配 IP 位址空間,系統就會產生這項洞察資料。當所有節點集區都處於完全自動調整狀態時,IP 位址空間不足將無法處理這種情況。

詳情請參閱「GKE 網路最佳做法」和「叢集自動配置器限制」。

建議

  • 如為路徑導向叢集,請重新建立叢集,並採用更大的 Pod 位址範圍。請將這個叢集建立為 VPC 原生叢集,因為這是建議的網路模式。請參閱虛擬私人雲端原生叢集和路徑導向叢集
  • 針對虛擬私有雲原生叢集,請使用多 Pod CIDR 將其他 Pod 範圍新增至叢集層級,並啟用節點自動佈建功能,以便透過自動 Pod IP 位址分配功能自動調整節點。如要進一步控管哪個 Pod IP 位址用於哪個節點集區,您可以使用多 Pod CIDR 建立使用特定次要 IP 位址範圍的節點集區;不過,這項功能適用於 Standard 叢集。