初始化后是否可以在kubeadm中分配pod-network-cidr?

时间:2020-03-30 22:18:51

标签: kubernetes kubeadm flannel

我使用kubeadm来初始化我的K8主设备。但是,我错过了与法兰绒一起使用的--pod-network-cidr=10.244.0.0/16标志。有没有一种方法(或配置文件)可以修改以反映该子网,而无需再次执行重新初始化过程?

2 个答案:

答案 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 集,将无法工作。