最佳化 IP 位址分配

本頁面說明如何設定可以在節點上執行的最大 Pod 數。這個值決定指派給 Google Kubernetes Engine 上節點的 IP 位址範圍的大小。在節點上執行的 Pod 會從節點的 Pod CIDR 範圍分配到 IP 位址。

總覽

根據預設,GKE 設定節點執行的 Pod 數不超過 110 個。Kubernetes 將 IP 位址的範圍 (一個 CIDR 區塊) 指派給每個節點,使每一個 Pod 都有一個不重複的 IP 位址。CIDR 區塊的大小對應每個節點的最大 Pod 數。

由於每個節點預設最大量是 110 個 Pod,Kubernetes 會將 /24 CIDR 區塊 (256 個位址) 指派給每個節點。由於擁有的 Pod 數大約等於兩倍的可用 IP 位址,當 Pod 被新增至節點或從其移除時,Kubernetes 可以減輕 IP 重複使用的問題。

如果您從預設值降低每個節點的最大 Pod 數,Kubernetes 會對應地將比較小的 CIDR 區塊指派給節點。區塊一律包含每個節點的最大 Pod 數至少兩倍的位址。下表列出 Kubernetes 依據每個節點的最大 Pod 數指派給每個節點的 CIDR 區塊的大小︰

每個節點的 Pod 上限: 每個節點的 CIDR 範圍
8 /28
9 至 16 /27
17 至 32 /26
33 至 64 /25
65 至 110 /24

設定每個節點的最大 Pod 數時,您間接設定了每一個叢集節點需要多少 IP 位址空間。例如,如果您將每個節點的最大 Pod 數設定為 30,則根據上表,會使用 /26 CIDR 範圍,並指派 64 個 IP 位址給每一個節點。如果您不設定每一個節點的最大 Pod 數,則會使用 /24 CIDR範圍,並指派 256 個 IP 位址給每一個節點。

降低每個節點的最大 Pod 數可讓叢集擁有更多節點,因為每個節點只需要總 IP 位址空間中比較小的部分。此外,您也可以在建立叢集時指定比較小的 Pod IP 位址空間,在叢集中支援同樣的節點數目。

減少每個節點的最大 Pod 數也讓您可以建立需要較少 IP 位址的較小叢集。例如,每個節點有 8 個 Pod 時,則會將 /28 CIDR 授予每一個 Pod。這些 Pod IP 位址範圍,加上使用者定義的子網路和次要範圍決定了成功建立叢集所需的 IP 位址數。

您可以在建立叢集和建立節點集區時,設定每個節點的最大 Pod 數。

限制

  • 您只能設定虛擬私人雲端原生叢集中每個節點的最大 Pod 數。
  • 節點的建立受限於 Pod 位址範圍中可用的位址數量。如需預設,最小和最大 Pod 位址範圍的大小,請參閱此表

設定每個節點的最大 Pod 數

您可以在建立叢集和建立節點集區時,設定每個節點的最大 Pod 數。叢集或節點集區建立後,這個設定就無法再變更。

您可以在建立叢集時,使用 gcloud 或 Google Cloud Platform 主控台設定 Pod 位址範圍的大小。

若要建立每個節點最多 110 個 Pod 的叢集︰

gcloud

gcloud beta container clusters create \
 --enable-ip-alias --cluster-ipv4-cidr=10.0.0.0/21 \
 --create-subnetwork=name='my-cluster-subnet',range=10.4.32.0/27 \
 --services-ipv4-cidr=10.4.0.0/19 --default-max-pods-per-node=110 \
 my-cluster

主控台

  1. 建立叢集時,請將「Advanced」(進階) 選項區段展開,並於「Networking section」(網路區段) 中選擇「Enable VPC-native (using alias IP)」(啟用虛擬私人雲端原生 (使用別名 IP))
  2. 設定「Maximum pods per node」(每個節點的最大 pod 數) 欄位。GKE 使用這個值微調指派給節點的 IP 位址範圍的大小。

這樣會建立最多包含八個節點的叢集。依據每個節點的最大 Pod 數,Kubernetes 會將 /24 CIDR 範圍授予每個節點,供該節點的 Pod 使用。由於叢集是從 /21 CIDR 範圍 (cluster-ipv4-cidr) 指派 Pod IP 位址,因此最多可以有 8 個節點 (24-21 = 3, 23 = 8)。default-max-pods-per-node 選項可以省略,因為預設值是 110。

若要建立每個節點最多八個 Pod 的叢集︰

gcloud

gcloud beta container clusters create \
  --enable-ip-alias --cluster-ipv4-cidr=10.0.0.0/21 \
  --create-subnetwork=name='my-cluster-subnet',range=10.4.32.0/21 \
  --services-ipv4-cidr=10.4.0.0/19 --default-max-pods-per-node=8 \
  my-cluster

主控台

  1. 建立叢集時,請將「Advanced」(進階) 選項區段展開,並於「Networking section」(網路區段) 中選擇「Enable VPC-native (using alias IP)」(啟用虛擬私人雲端原生 (使用別名 IP))
  2. 設定「Maximum pods per node」(每個節點的最大 pod 數) 欄位。GKE 使用這個值微調指派給節點的 IP 位址範圍的大小。

這會建立最多可以包含 128 個節點的叢集。依據每個節點的最大 Pod 數,Kubernetes 會將 /28 CIDR 範圍授予每個節點,供該節點的 Pod 使用。由於所有 Pod 可以使用的範圍 (cluster-ipv4-cidr) 為一 /21 CIDR 範圍,表示最多可以有 128 個節點 (28-21 = 7, 27= 128)。

在現有叢集中建立節點集區時,您也可以指定每個節點的最大 Pod 數。建立新節點集區可讓您將 IP 位址分配最佳化,即使未在叢集層級設定 max-pods-per-node 的現有叢集中也是如此。

gcloud

gcloud beta container node-pools create \
  my-pool --cluster=my-cluster \
  --max-pods-per-node=30

主控台

  1. 在「cluster editing」(叢集編輯) 頁面上,按一下 [Add node pool] (新增集區節點)
  2. 設定「Maximum pods per node」(每個節點的最大 pod 數) 欄位。GKE 使用這個值微調指派給節點的 IP 位址範圍的大小。

這個值會覆寫在叢集層級套用的 default-max-pods-per-node 選項。建立節點集區時,如果省略了 max-pods-per-node 選項,則會使用叢集層級的預設配置。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件