Kubernetes pod-network-cidr 設錯會發生什麼事情
第一次用 kubeadm 建 Kubernetes 時,pod-network-cidr 很容易被當成一個「先抄文件再說」的參數,但它其實是整個 Pod 網路配置的基礎。只要這個值設錯,後面即使節點起來了,網路也可能會出現很難查的異常。
pod-network-cidr 在管什麼
它定義的是 Pod 使用的 IP 範圍,也就是 CNI 外掛之後拿來分配 Pod 網段的基礎。如果這個網段和你實際的主機區網、路由規劃互相衝突,封包路徑就會亂掉。
最常見的錯誤
最典型的問題,就是把 Pod 網段設成和現有內網過於接近,甚至直接重疊。例如主機區網本來就在 192.168.x.x,你卻又把 Pod 網段設成包含同區段的範圍,這時系統很容易不知道流量到底該往節點、Pod 還是外部路由送。
會出現什麼症狀
這種錯誤不一定一開始就很明顯,但常見現象包括:
- 節點變成
NotReady。 - CNI Pod 起不來或狀態異常。
- Worker 和 Master 之間互通有問題。
- 封包被導去奇怪的路由。
也就是說,看起來像是「Kubernetes 壞掉」,但根因其實可能只是網段規劃不對。
為什麼這件事麻煩
因為 pod-network-cidr 不是那種隨便改一下設定檔就完全沒事的參數。很多情況下,如果初始化時就設錯,後面往往得重設叢集再來一次,成本比一般配置錯誤高很多。
怎麼避開
最基本的原則很簡單:
- Pod 網段不要和現有主機內網重疊。
- 在初始化前先確認 CNI 官方文件建議的網段。
- 若環境複雜,先畫出實際網路拓樸再決定 CIDR。
如果你的主機已經大量使用 192.168.x.x,很多人會選擇把 Pod 網段切到 10.x.x.x 這類更容易區隔的範圍。
小結
pod-network-cidr 不是可有可無的小參數,它直接影響 Kubernetes 叢集裡 Pod 網路怎麼走。設錯最麻煩的地方,不只是連線失敗,而是問題表面看起來像 CNI、節點或路由都壞了。部署前先把網段規劃想清楚,會比後面重建叢集輕鬆很多。
重置發生問題(彩蛋)
Kubernetes(K8s) 使用kubeadm reset重置后 kubeadm init 失败的解决方法-CJavaPy
虚拟化运维–容器网络–K8S+Calico(十三) - 简书
故障排查:Kubernetes 中 Pod 无法正常解析域名 | Linux经验之谈
常見 CNI (Container Network Interface) Plugin 介紹 | Hwchiu Learning Note
簡單5步,輕鬆debug K8S服務! | IT人