k8s配置ingress的时候,ingress-nginx-controller状态一直是ContainerCreating
1、查看报错原因
查看容器状态
kubectl describe po <your_pod>
Failed to create pod sandbox: rpc error: code = Unknown desc = failed
to setup network for sandbox
“c96e39dbaf5960a2debf7d6b444ed9a7c1e954dbc3a6adb8dde820ebf015c8dd”:
plugin type=“flannel” failed (add): failed to delegate add: failed to
set bridge addr: “cni0” already has an IP address different from
10.244.2.1/24
并且可以看到该容器部署在k8s-node03上面,说明是k8s-node03出现了问题。
2、检查网络配置
登录k8s-node03,使用下面两条指令分别查看cni0的网络。
[root@k8s-node03 ~]# cat /run/flannel/subnet.env
[root@k8s-node03 ~]# ip a|grep cni0
我查看了三个节点的配置,对应如下图,发现是k8s-node03节点上的cni0没配好。
3、解决方案
下面两条指令删除cni0
[root@k8s-node03 ~]# ifconfig cni0 down
[root@k8s-node03 ~]# ip link delete cni0
重新生成cni0,将ip设置为报错的那个ip
[root@k8s-node03 ~]# ip link add cni0 type bridge
[root@k8s-node03 ~]# ip link set dev cni0 up
[root@k8s-node03 ~]# ifconfig cni0 10.244.2.1/24
[root@k8s-node03 ~]# ifconfig cni0 mtu 1450 up
之后pod就正常了。