3

Is it possible to change CIDR network flannel on running Kubernetes cluster? If yes what will happen with the launched pods?

Thanks

Kris454
  • 43

2 Answers2

7

I've managed to change Flannel CIDR network pool in the following way:

Assuming that you have installed a fresh k8s cluster via kubeadm builder tool with adopting appropriate --pod-network-cidr flag in kubeadm init command:

Override podCIDR parameter on the particular k8s Node resource with a new IP source range, desirable way with piping output:

$ 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

Replace "Network" field under net-conf.json header in the relevant Flannel ConfigMap with a new network IP range:

$ kubectl edit cm kube-flannel-cfg -n kube-system

net-conf.json: | { "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" } }

Wipe current CNI network interfaces remaining the old network pool:

$ sudo ip link del cni0; sudo ip link del flannel.1

Re-spawn Flannel and CoreDNS pods respectively:

$ kubectl delete pod --selector=app=flannel -n kube-system
$ kubectl delete pod --selector=k8s-app=kube-dns -n kube-system

Wait until CoreDNS pods obtain IP address from a new network pool. Keep in mind that your custom Pods will still retain the old IP addresses inside containers unless you re-create them manually as well.

Nick_Kh
  • 578
0

For calico, create new IPpool and and disable old.... https://projectcalico.docs.tigera.io/networking/migrate-pools