環(huán)境背景現(xiàn)象
3臺linux服務(wù)器搭建的一個?kubeadm-k8s 的集群環(huán)境,(1 Master 2 Worker),? 當(dāng)斷電或者虛擬機掛起恢復(fù)后出現(xiàn) service 訪問不了,pod之間ping不通或者集群搭建失敗問題,但是K8s集群還是正??梢詣?chuàng)建 deployment 以及調(diào)度 pod 到各個 node 上, 并且 node都處于 ready 的狀態(tài)。
問題排查
1),查詢服務(wù)pod狀態(tài)
找到其中的?kube-flannel-xxx? 和 coredns-xxx 是否正常
# kubectl get pods -ALL
?2),排查問題
# 查看 coredns-xxx 日志?
# kubectl logs coredns-xxx -n kube-system
# 查看 kube-flannel-xxx 日志?
# kubectl logs kube-flannel-xxx -n kube-system
這時可能會看到如下?
[INFO] plugin/reload: Running configuration MD5 = db32ca3650231d74073ff4cf814959a7
CoreDNS-1.8.6
linux/amd64, go1.17.1, 13a9191
[ERROR] plugin/errors: 2 5782807611420449381.4040865981692797236. HINFO: read udp 10.244.1.33:37104->8.8.8.8:53: i/o timeout
[ERROR] plugin/errors: 2 5782807611420449381.4040865981692797236. HINFO: read udp 10.244.1.33:55737->8.8.8.8:53: i/o timeout
[ERROR] plugin/errors: 2 5782807611420449381.4040865981692797236. HINFO: read udp 10.244.1.33:49960->8.8.8.8:53: i/o timeout
failed to add vxlanRoute (10.244.0.0/24 -> 10.244.0.0): network is down
1 vxlan_network.go:198] failed to add vxlanRoute (10.244.1.0/24 -> 10.244.1.0): network is down
如上從日志可以看到是?flannel.1 網(wǎng)卡 或 cni0 網(wǎng)卡?問題。
1),方法一
可以先進行集群節(jié)點之間的物理ip進行測試 比如主節(jié)點ping從節(jié)點的物理ip 如果ping不能通,就是網(wǎng)卡問題 ,一般直接簡單的方法可以直接 reboot 來重啟虛擬機,
2),方法二
如果本身網(wǎng)絡(luò)連接沒問題,那么基本上就是flannel插件的問題了。看看node是不是缺少了flannel.1網(wǎng)絡(luò)設(shè)備,輸入ifconfig命令可看(可能會缺少cni0 或者 ?flannel.1 網(wǎng)段? 或者其他虛擬機節(jié)點 ping 這兩個網(wǎng)段卻 ping 不通)
問題解決
(flannel的部署文件為master node的 ~/flannel/kube-flannel.yaml)有一個kube-flannel.yaml文件
首先,在master node執(zhí)行命令:
# kubectl delete -f kube-flannel.yaml
然后,在master node和所有worker node依次執(zhí)行:
# sudo ifconfig cni0 down
# sudo ip link delete cni0
# sudo ifconfig flannel.1 down
# sudo ip link delete flannel.1
# sudo rm -rf /var/lib/cni/flannel/*
# sudo rm -rf /var/lib/cni/networks/cbr0/*
# sudo rm -rf /var/lib/cni/cache/*
# sudo rm -f /etc/cni/net.d/*
# sudo systemctl restart kubelet
# sudo systemctl restart docker
# sudo chmod a+w /var/run/docker.sock
最后,在 master node 執(zhí)行命令:文章來源:http://www.zghlxwxcb.cn/news/detail-721432.html
# kubectl apply -f kube-flannel.yaml
按上述方法創(chuàng)建以后,再輸入ifconfig命令,如果其有flannel.1,但是沒有cni0(這個不算網(wǎng)絡(luò)問題),那就在該node手動創(chuàng)建一個pod(保證在該node上運行)并且創(chuàng)建暴露該pod端點的service,cni0 網(wǎng)橋就會被 flannel?自動創(chuàng)建出來。文章來源地址http://www.zghlxwxcb.cn/news/detail-721432.html
到了這里,關(guān)于虛擬機掛起/重啟后導(dǎo)致K8s網(wǎng)絡(luò)不通或服務(wù)啟動后主節(jié)點無法訪問問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!