vmware 搭建k8s无法ping通子节点_一波四折 —— 记一次K8S集群应用故障排查

5d77e664d458388a9bbb5e4f332d14b3.gif f8d5bfbb01a578ba16595206a43c52f9.png一波四折 5d77e664d458388a9bbb5e4f332d14b3.gif ——记一次K8S集群应用故障排查 446ef5d5f03849b4e68407f31a1202c4.png Part1 初露端倪 eba7e0a1d1246ed48f0cbe6436e54f34.png 64dd880342ce5bac814daf7dab57a810.gif

一个周四的下午,客户的报障打破了微信群的平静。

“我们部署在自建K8S集群上的应用突然无法正常访问了,现在业务受到了影响!”

收到客户的报障,我们立刻响应,向客户了解了问题现象和具体报错信息。

客户反馈K8S集群部署在云主机上,K8S的应用pod example-app通过访问外部域名example-api.com调用接口,同时访问云数据库做数据查询后将结果返回客户端。客户排查应用pod日志,日志中有如下报错:

ee860c5f1fbb41c832378364e9a292d0.png

可以看到最关键的信息是Name or service not known。该报错一般为域名无法解析导致的。

由于客户的应用pod只访问example-api.com这一个外部域名,因此判断应该是pod解析该域名时出现异常。为了进一步验证,我们执行kubectl exec -it example-app /bin/sh命令进入pod内执行ping example-api.com命令,果然出现了相同的报错。

ea0742bd3aae2ea2679756f8e41cd74e.png

因此可以确认应用日志中的报错是域名解析失败导致的。

执行kubectl get pod example-app -o yaml|grep dnsPolicy查看pod的dns策略,是ClusterFirst模式,也就是pod使用K8S集群的kube-dns服务做域名解析。

执行命令kubectl get svc kube-dns -n kube-system,确认kube-dns服务的clusterIP是192.168.0.10 查看pod内的/etc/resolv.conf文件,nameserver设置的正是该IP。再执行kubectl describe svc kube-dns -n kube-system|grep Endpoints,可以看到dns服务关联了一个coredns pod作为后端。

执行kubectl get pods -n kube-system|grep coredns看到kube-dns关联的coredns pod处于running状态。

再执行kubectl logs coredns –n kube-system,看到pod日志中有大量和客户配置的外部dns服务器IP地址通讯超时的报错。</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值