Networking
是否可以更改 CIDR 網路法蘭絨和 Kubernetes
是否可以在執行 Kubernetes 集群上更改 CIDR 網路法蘭絨?如果是,啟動的 pod 會發生什麼?
謝謝
我設法通過以下方式更改了Flannel CIDR 網路池:
假設您已經通過kubeadm builder 工具安裝了一個新的 k8s 集群,並在命令中採用了適當
--pod-network-cidr
的標誌:kubeadm init
使用新的 IP 源範圍覆蓋
podCIDR
特定 k8s節點資源上的參數,使用管道輸出的理想方式:$ kubectl get no $hostname -o yaml >> file.yaml | sed -i "s~$old_ip~$new_ip~" file.yaml| kubectl delete no $hostname && kubectl create -f file.yaml
net-conf.json
將相關 Flannel ConfigMap中標題下的“網路”欄位替換為新的網路 IP 範圍:$ kubectl edit cm kube-flannel-cfg -n kube-system
網-conf.json:| {“網路”:“10.244.0.0/16”,“後端”:{“類型”:“vxlan”}}
擦除舊網路池中剩餘的目前 CNI 網路介面:
$ sudo ip link del cni0; sudo ip link del flannel.1
分別重新生成 Flannel 和 CoreDNS pod:
$ kubectl delete pod --selector=app=flannel -n kube-system $ kubectl delete pod --selector=k8s-app=kube-dns -n kube-system
等到 CoreDNS pod 從新的網路池中獲取 IP 地址。請記住,您的自定義 Pod 仍將保留容器內的舊 IP 地址,除非您也手動重新創建它們。