GKE IP 位址使用率洞察

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

在 Recommender API 中查看洞察

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

  • google.networkanalyzer.container.ipAddressInsight

您需要下列權限:

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

如要進一步瞭解如何使用 Recommender API 取得網路分析器洞察,請參閱「使用 Recommender CLI 和 API」。

GKE Pod 範圍分配量偏高

這項洞察指出,GKE 叢集的 Pod 位址範圍 IP 位址使用率高於 80%。GKE Pod 的 IP 位址分配政策會因叢集是做為 VPC 原生叢集或使用路由的叢集建立而異。

使用路由的叢集

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

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

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

Pod 位址範圍的每個節點都有 /24 範圍的 Pod IP 位址。/24 範圍有 28 = 256 個位址。回想一下,Pod 位址範圍中有 4096 個位址可用於 Service。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 個位址。減去用於 Service 的 4096 個位址,可得到 258,048,足以容納 900 個節點。

VPC 原生叢集

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

在 VPC 原生叢集中建立節點集區時,請選取次要 IP 位址範圍,為 GKE Pod 分配 IP。不同節點集區可以使用不同的次要範圍,分配 Pod IP 位址。詳情請參閱「多 Pod CIDR」。網路分析器會計算每個次要 IP 位址範圍的分配比率,這些範圍用於為特定叢集分配 Pod IP 位址。如果整體分配比率超過 80%,您會收到高使用率洞察。

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

$\frac{\text {從次要範圍分配至節點的 IP 位址}}{\text {次要範圍大小}}$

例如,/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,且分配的 CIDR 範圍為 /24,則 IP 位址總數為 256 * 6 = 1536。這相當於兩個 Pod IP 位址範圍 (1024 * 2 = 2048) 中可用 IP 位址總數的 75%。

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

建議

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

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

當完全自動調度資源的 IP 位址使用率值超過 100% 時,網路分析器就會產生這項洞察。

當叢集內支援最大節點數所需的 Pod IP 位址數,超過叢集 Pod IP 位址範圍內的 IP 位址數時,完全自動調度資源的 IP 位址使用率值就會超過 100%。叢集中的節點數上限,是叢集內每個節點集區的節點數上限 (maxNodeCount) 總和。

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

使用路由的叢集

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

VPC 原生叢集

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

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

建議

  • 如為使用路由的叢集,請重新建立叢集,並採用更大的 Pod 位址範圍。請將這個叢集建立為 VPC 原生叢集,因為這是建議的網路模式。請參閱「VPC 原生叢集和使用路由的叢集」。
  • 如為 VPC 原生叢集,請使用多 Pod CIDR 在叢集層級新增額外 Pod 範圍,並啟用自動佈建節點功能,自動分配 Pod IP 位址,藉此自動調整節點規模。如要進一步控管哪些節點集區使用哪些 Pod IP 位址,可以使用多 Pod CIDR 建立使用特定次要 IP 位址範圍的節點集區;不過,這「僅」適用於 Standard 叢集。