Is it possible to change CIDR network flannel on running Kubernetes cluster? If yes what will happen with the launched pods?
Thanks
Is it possible to change CIDR network flannel on running Kubernetes cluster? If yes what will happen with the launched pods?
Thanks
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.
For calico, create new IPpool and and disable old.... https://projectcalico.docs.tigera.io/networking/migrate-pools