我使用kubeadm
来初始化我的K8主设备。但是,我错过了与法兰绒一起使用的--pod-network-cidr=10.244.0.0/16
标志。有没有一种方法(或配置文件)可以修改以反映该子网,而无需再次执行重新初始化过程?
答案 0 :(得分:5)
使用IP源范围10.244.0.0/16
覆盖所有k8s节点资源上的PodCIDR参数
$ kubectl edit nodes nodename
用新的网络IP范围替换相关Flannel ConfigMap中net-conf.json标头下的“网络”字段:
$ kubectl edit cm kube-flannel-cfg -n kube-system
net-conf.json: | { "Network": "10.244.0.0/16", "Backend": { "Type": "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地址保留在容器中
答案 1 :(得分:0)
使用 v1.17+ 和本地下载的 kube-flannel.yml,已接受答案中命令序列的更紧凑摘要是:
kubectl delete -f kube-flannel.yml
sudo ip link del cni0
sudo ip link del flannel.1
kubectl patch node vm1 vm2 vm3 -p '{ "spec": { "podCIDR": "10.244.0.0/16" } }'
kubectl apply -f kube-flannel.yml
如果节点已经有一个 podCIDR
集,将无法工作。