Networking

是否可以更改 CIDR 網路法蘭絨和 Kubernetes

  • January 17, 2022

是否可以在執行 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 地址,除非您也手動重新創建它們。

引用自:https://serverfault.com/questions/976513