当前位置:   article > 正文

k8s 虚拟机挂起、恢复后网络不通 ,或其他网络问题解决方案_[error] plugin/errors: 2 6675404304418824035.80267

[error] plugin/errors: 2 6675404304418824035.8026710540643930107. hinfo: rea

tag: 此方法为终极解决方案,相对其他网上解决方案最优

项目场景:

            service访问不了、pod之间ping不通等问题, service访问不了 、 而k8s集群还是能正常创建deployment以及调度pod,node 之间ping得通

大概原因:

k8s集群时使用的flannel网络插件出了问题的原因。

具体有 虚机机挂起 ,再恢复 , 或其他未知网络原因造成

 

具体排查结果

(1)kubectl get pods -n kube-system

kube-flannel-xxx  可能 CrashLoopBackOff 或 正常(要看日志)

coredns-xxx  可能一直失败

(2)查看日志  

kubectl logs coredns-xxx  -n kube-system

  1. [INFO] plugin/reload: Running configuration MD5 = db32ca3650231d74073ff4cf814959a7
  2. CoreDNS-1.8.6
  3. linux/amd64, go1.17.1, 13a9191
  4. [ERROR] plugin/errors: 2 5782807611420449381.4040865981692797236. HINFO: read udp 10.244.1.33:37104->8.8.8.8:53: i/o timeout
  5. [ERROR] plugin/errors: 2 5782807611420449381.4040865981692797236. HINFO: read udp 10.244.1.33:55737->8.8.8.8:53: i/o timeout
  6. [ERROR] plugin/errors: 2 5782807611420449381.4040865981692797236. HINFO: read udp 10.244.1.33:49960->8.8.8.8:53: i/o timeout

 kubectl logs kube-flannel-ds-d5sgp -n kube-system

  1. failed to add vxlanRoute (10.244.0.0/24 -> 10.244.0.0): network is down
  2. 1 vxlan_network.go:198] failed to add vxlanRoute (10.244.1.0/24 -> 10.244.1.0): network is down

貌似是dns出问题,实际上是网络不通,pod 都ping不通,flannel网卡down了

(3)查找出问题得节点 (node/master)

通过ping pod  \ curl xxxx 的方式,确定是哪个节点的网卡出了问题,如果是某个node,不通就是那个node出问题,如果在master全部不通,就可能是master 出问题,确定好节点后,进入节点sh输入命令

ifconfig

发现缺少 flannel.1 网卡 或 cni0 网卡 丢失 ,问题找到 !!!

解决方案

方案一:

            网上大部分方法就是reboot ,万能解决, 确实能解决问题!!!

           但是,某些场景不想机器reboot(比如生产环境),代价大,或者reboot也解决不了问题

方案二:

        网上的第二种解决方案是删除flannel,重新在master安装yaml , 也可行,但是可能会造成所有pod ip全部丢失,需要重新构建,这个代价也同样巨大,具体方案百度,这里略

方案三:(推荐)

    个人摸索N次方式,实现了不用重启,承载业务的pod不用重新构建,不更改IP,不重启机器,只重构2个系统pod

步骤1:

出问题节点(node/master)

  1. #-----------------------------
  2. #可以测试重新启动看下,会发现IP配置丢失
  3. #ifconfig cni0 up
  4. #ifconfig flannel.1 up
  5. #----------------------------
  6. #关闭网卡,节点实际存在,但是背后被关闭了
  7. ifconfig cni0 down
  8. ifconfig flannel.1 down
  9. #----------------------------
  10. #删除网卡配置
  11. ip link delete flannel.1
  12. #千万注意: 此项目不可删除,删除节点上IP全部失效,所有pod需要全部重新构建,新ip全部变完
  13. #(屏蔽) ip link delete cni0

步骤2:

在 master 上 删除 系统node

  1. #列出所有系统pod
  2. kubectl get pod -n kube-system -o wide
  3. #通过ip 对应节点,找到2个系统pod
  4. # kube-flanner-xxxx
  5. # coredns-xxx-xxx
  6. #注意删除顺序,不可搞反
  7. #此pod对应flannel.1
  8. kubectl delete pod kube-flanner-xxxx -n kube-system
  9. #此pod对应 cni0
  10. #此项可能会多次删除还是再启动失败,可能原因上面网络初始化未完成
  11. #间隔时间大一点,多试几次,删除,自动创建,再删除自动创建,直到启动成功
  12. kubectl delete pod coredns-xxx-xxx -n kube-system
  13. #刷状态,到正常为止
  14. kubectl get pod -n kube-system -o wide

删除pod ,系统会重生构建新pod

此时注意观察状态OK了,系统全部恢复

步骤3:

验证: 在master ping 出问题节点上pod 的ip ,和curl xxx 验证service ,ingress 等等

         在节点上输入ifconfig 看看网卡是否恢复

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/183834
推荐阅读
相关标签
  

闽ICP备14008679号