kubernate解决 “cni0“ already has an IP address different from 10.244.0.1/24问题
问题
NetworkPlugin cni failed to set up pod “coredns-5d4b4db-jkmnl_kube-system” network: failed to set bridge addr: “cni0” already has an IP address different from 10.244.0.1/24
解决方案
这个问题通常是由于Flannel网络插件残留配置导致的IP地址冲突。以下是解决方案:
1. 清理Flannel残留配置:
- 在master节点删除Flannel部署:kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 在所有节点执行以下清理命令:
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
2. 检查/重建subnet.env文件:
- 确保/run/flannel/subnet.env文件存在且内容正确,应包含:
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
```:ml-citation{ref="3,6" data="citationList"}
3. 重新部署Flannel:
- 确认kubeadm初始化时指定了正确的pod网络CIDR:kubeadm init --pod-network-cidr=10.244.0.0/166
- 重新应用Flannel配置:kubectl apply -f kube-flannel.yml
验证解决:
- 检查cni0网桥IP是否变为10.244.0.1/24:ip addr show cni0
- 观察Pod是否能够正常启动
如果问题仍然存在,可能需要重启节点或检查Calico等其他网络插件的兼容性问题。