Is there a way to assign pod-network-cidr in kubeadm after initialization?
Asked Answered
G

1

16

I used kubeadm to initialize my K8 master. However, I missed the --pod-network-cidr=10.244.0.0/16 flag to be used with flannel. Is there a way (or a config file) I can modify to reflect this subnet without carrying out the re-init process again?

Gissing answered 30/3, 2020 at 22:18 Comment(1)
Edit the generated CNI config files?Cerellia
P
19

Override PodCIDR parameter on the all k8s Node resource with a IP source range 10.244.0.0/16

$ kubectl edit nodes nodename

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

Profundity answered 31/3, 2020 at 6:55 Comment(5)
Attempting to override the podCIDR parameter results in the error: # nodes "(the node name)" was not valid: # * spec.podCIDRs: Forbidden: node updates may not change podCIDR except from "" to valid Viceregal
Great answer. Thank you. In my case, replacing the "Network" field was not necessary. It was already set correctly.Abranchiate
The Network section isn't available in Kubernetes 1.21.8, when I run kubectl edit nodes.Meadows
This will result in duplicate IP addresses. podCIDR should be unique for each node or not set at all. More over, if you use this approach of setting podCIDR you have to do this for every new node manually.Gastrostomy
Can you elaborate on the first point. I cannot see the PodCIDR parameter anywhere in the file. TBH I'm happy to re-init with kubeadm but cannot find docs on how to specify --pod-network-cidr on the config file.Cofferdam

© 2022 - 2024 — McMap. All rights reserved.