wtysos11 / blogWiki

Use to store public paper and organize them.
17 stars 4 forks source link

记一次k8s集群bug排错 #250

Open wtysos11 opened 2 years ago

wtysos11 commented 2 years ago

今天在实验室服务器安装新集群的时候,突然发现有很多pod在报:Failed to setup network for pod \ using network plugins \"cni\": no IP addresses available in network。初步排查之后发现应该是重复安装时未清理flannel设置的cni0,也就没管它。 然后神奇的事情发生了,在我把所有服务打上去之后,prometheus和grafana设为nodePort之后突然就访问不了了。随后我使用kubectl get pods -n=istio-system -o wide后发现这两个服务都被部署到了21节点上。然后我登陆了21节点,发现在21节点上这两个服务是能够正常访问的。 随后我搜索了一下nodeport service only access at running node,发现这个问题同样是比较经典的问题:

基本上没有明确的问题指向,大家的共识就是这是一个配置问题。解决方法包括关闭防火墙,重启kubelet和docker,清除iptable等等

清除cni

kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down

重启服务并刷新iptables

systemctl stop kubelet
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start kubelet
systemctl start docker

我每个节点都试了一下,也没什么用。在执行到21节点的时候,突然间发生了奇怪的事情,那个问题又回来了:Failed to setup network for pod \ using network plugins \"cni\。目前初步地推断是,21节点的cni0一直是有问题的,但是不知道为什么又通过了检查,但是没有工作,所以它实际上和整个集群的pod网络是分开的……