224. GKE的節點上限

WHY

最近同事在搞壓力測試,
然後他就突然跟我說,欸,我的pod起不來。
看了一下,發現ip 應該是還夠的啊,怎麼會噴 scale.up.error.ip.space.exhausted

How

因為GKE會根據每個node上,所設定的最大pod數量,
以及pod的CIDR範圍,來計算你這個cluster可以開到幾個node。

ref.組態每個節點的 Pod 數上限

文章的最後有寫到,

如果您將默認最大 Pod 數設定為 110 並將 Pod 的次要 IP 地址範圍設定為 /21,Kubernetes 會為叢集中的節點分配 /24 CIDR 範圍。這允許叢集中最多有2(2421) = 23 =  8 個節點。

我的最大pod數為110,次要IP範圍也是/21
所以node開到8個,就達到上限了。

224-fig.1.png

然後,為什麼kubernetes替叢集的節點分配的範圍是 /24
要往下看表格。

每個節點的最大 Pod 數量 每個節點的 CIDR 範圍 IP 地址數量
8 /28 16
9 - 16 /27 32
17 - 32 /26 64
33 - 64 /25 128
65 - 128 /24 256
129 - 256 /23 512

假設最大pod數是64,那最大節點數則是 2(2521) = 24 = 16

Solution

後來才知道原因,當時有其他案子在手中,沒空查原因。
但當下直接加大機器規格,減少node的數量。
或者直接在vpc上面增加新的pod range,應該也是可以的。