配額與限制

本頁面說明裸機上的 Google Distributed Cloud (僅限軟體) 配額與 Google Cloud 專案、叢集和節點的限制。

限制

以下各節概述叢集的一些基本限制。設計要在 Google Distributed Cloud 上執行的應用程式時,請將這些限制納入考量。

每個管理員叢集最多可建立的使用者叢集數

管理員叢集會管理使用者叢集及其相關聯節點的生命週期。管理員叢集會控管重要的使用者叢集作業,例如叢集建立、叢集或節點重設、叢集升級和叢集更新。使用者叢集節點總數是限制效能和可靠性的主要因素之一。

根據持續進行的測試,管理員叢集最多可穩定支援 100 個使用者叢集,每個叢集有 10 個節點,總共 1,000 個節點。

每個使用者叢集的 Pod 數量上限

建議您將每個使用者叢集的 Pod 數量限制為 15,000 個或更少。舉例來說,如果叢集有 200 個節點,每個節點的 Pod 數量應限制為 75 個以下。同樣地,如要為每個節點執行 110 個 Pod,叢集中的節點數量應限制在 136 個以下。下表提供建議和不建議的設定範例。

每個節點的 Pod 數量。 每個叢集的節點數量 每個叢集的 Pod 數 結果
110 200 22,000 Pod 數量過多,不建議使用
110 136 14,960 在限制範圍內
100 150 15,000 在限制範圍內
75 200 15,000 在限制範圍內

每個使用者叢集的 Pod 數量上限建議,會優先於下列各節中每個節點的 Pod 數量和每個使用者叢集的節點數量建議。

每個使用者叢集的節點數量上限

我們測試 Google Distributed Cloud,以執行最多 500 個節點的工作負載。不過,為確保最佳效能和可靠性,建議您在實際工作環境中執行工作負載時,每個叢集的節點數不要超過 200 個。

叢集類型 節點數量下限 建議的節點數量上限 節點絕對上限
使用者、獨立或混合 1 200 500

如果是單一節點叢集,您必須移除 node-role.kubernetes.io/master:NoSchedule 汙點,才能在節點上執行工作負載。詳情請參閱「Kubernetes taint 和容許條件」。

每個節點的 Pod 數量上限

Google Distributed Cloud 支援在叢集設定檔nodeConfig.PodDensity.MaxPodsPerNode 設定中,設定每個節點的 Pod 數量上限。下表顯示 MaxPodsPerNode 支援的最小值和最大值,包括執行附加服務的 Pod:

叢集類型 允許的最小值 建議最大值 允許的最大值
所有 HA 叢集和非 HA 使用者叢集 32 110 250
所有其他非 HA 叢集 64 110 250

端點數量上限

在 Red Hat Enterprise Linux (RHEL) 上,叢集層級的端點限制為 100,000 個。這個數字是 Kubernetes 服務參照的所有 Pod 總和。如果兩項服務參照同一組 Pod,這種情況會計為兩組不同的端點。這是 RHEL 的底層實作方式所致,並非 Google Distributed Cloud 的固有限制。nftable

減輕影響

對於 RHEL,沒有任何緩解措施。對於 Ubuntu 和 Debian 系統,我們建議在大型叢集上從預設的 nftables 切換至舊版 iptables

GKE Dataplane V2

Google Distributed Cloud 使用 GKE Dataplane V2,這是以 CiliumeBPF 實作的叢集資料層,專為 Kubernetes 網路最佳化。

GKE Dataplane V2 NetworkPolicy 限制

GKE Dataplane V2 使用 Cilium 管理 Kubernetes NetworkPolicy 資源。叢集適用下列限制:

維度 支援的限制
命名空間標籤的變更率上限 每個命名空間每小時最多可變更一次。

在大多數情況下,這個限制並非必要。只要變更不頻繁 (例如每秒變更一次),或 Cilium 身分 (不重複的標籤集) 數量未接近上限,就不會發生問題。上限為 16,000 個標籤集 (搭配「允許所有」網路政策),或每個叢集 65,535 個標籤集。

每個叢集的服務端點數量上限 10 萬個端點是經過測試的建議上限。服務端點的硬式編碼限制為 262,000 個。
網路政策和規則數量上限 最多 40,000 項網路政策和 80,000 條規則。舉例來說,您可以指定 40,000 項網路政策,每項政策有兩條規則;也可以指定 20,000 項政策,每項政策有四條規則。
網路政策的變更率上限 每秒最多 20 項變更 (建立或刪除)。
不重複的 Pod 標籤集數量上限 65,535 (216-1)。這是 Cilium 安全性身分限制。
政策選取器選取的專屬 Pod 標籤集數量上限 16,000 (固定的 eBPF 對應大小)。特定政策選取器對應檔項目包含安全性身分、通訊埠和通訊協定。

GKE Dataplane V2 eBPF 限制

Dataplane V2 的 BPF lbmap 項目數量上限為 65,536 個。 下列領域的增加可能會導致總項目數增加:

  • 服務數量
  • 每個服務的通訊埠數量
  • 每個服務的後端數量

建議您監控叢集使用的實際項目數,確保不會超過限制。使用下列指令取得目前的項目:

kubectl get po -n kube-system -l k8s-app=cilium | cut -d " " -f1 | grep anetd | head -n1 | \
    xargs -I % kubectl -n kube-system exec % -- cilium bpf lb list | wc -l

此外,建議您使用自己的監控管道,從 anetd DaemonSet 收集指標。請監控下列情況,判斷項目數量是否造成問題:

cilium_bpf_map_ops_total{map_name="lb4_services_v2",operation="update",outcome="fail" } > 0
cilium_bpf_map_ops_total{map_name="lb4_backends_v2",operation="update",outcome="fail" } > 0

LoadBalancer 和 NodePort 服務的連接埠限制

LoadBalancerNodePort 服務的通訊埠上限為 2,768 個。預設的連接埠範圍為 30000-32767。如果超出限制,您就無法建立新的 LoadBalancerNodePort 服務,也無法為現有服務新增節點連接埠。

根據預設,Kubernetes 會將節點通訊埠分配給 LoadBalancer 類型的服務。這些配置可能會快速耗盡叢集分配到的 2,768 個可用節點通訊埠。如要節省節點通訊埠,請在 LoadBalancer 服務規格中,將 allocateLoadBalancerNodePorts 欄位設為 false,停用負載平衡器節點通訊埠分配。這項設定可防止 Kubernetes 將節點通訊埠分配給 LoadBalancer 服務。詳情請參閱 Kubernetes 說明文件中的「停用負載平衡器 NodePort 分配」。

使用下列指令檢查已分配的連接埠數量:

kubectl get svc -A | grep : | tr -s ' ' | cut -d ' '  -f6 | tr ',' '\n' | wc -l

套裝組合負載平衡器節點連線限制

每個用於套裝負載平衡 (MetalLB) 的節點允許的連線數為 28,000。這些連線的預設暫時通訊埠範圍為 32768 到 60999。如果超過連線限制,對 LoadBalancer 服務的要求可能會失敗。

如果您需要公開可處理大量連線的負載平衡器服務 (例如 Ingress),建議考慮使用替代負載平衡方法,以免受到 MetalLB 的限制。

叢集配額

根據預設,每個機群最多可註冊 250 個叢集,並具有全域成員資格。如要在 GKE Hub 中註冊更多叢集,可以在 Google Cloud 控制台中提交增加配額的要求:

前往「配額」

如要進一步瞭解根據成員設定的叢集配額,請參閱「配額分配」。

縮放資訊

本文資訊有助於規劃如何擴充叢集。詳情請參閱「擴大 Google Distributed Cloud 叢集」。

找不到您要搜尋的內容嗎?按一下「提供意見」,告訴我們缺少哪些內容。