问题描述

pod内无法解析service域名,导致无法访问其他应用


原因分析:

可能原因:

  • 3层网络故障
  • dns服务解析异常。集群内pod 域名通过core-dns解析,集群外通过宿主机DNS解析。

排查步骤:

step1. 直接ping service对应clusterIP 正常。
step2. 检查core-dns pod 到对应service通信异常,endpoint所指地址与实际core-dns pod ip 不一致。在这里插入图片描述

问题根因

core-dns pod 和service通信异常,导致其他pod域名解析失败

解决方法

删除service对应endpoint,重启core-dns恢复

知识拓展

pod域名解析是通过core-dns
在这里插入图片描述
pod 内resolv.conf对应的nameserver 就是core-dns service 的clusterIP
在这里插入图片描述
在Kubernetes中,域名的全称是 service-name.namespace.svc.cluster.local这种模式,当执行 curl b时,在容器内会根据/etc/resolv.conf进行解析流程,首先会选择100.64.0.2进行解析。用字符串"b"依次带入容器内/etc/reslov.conf中的search域进行DNS查找。当所有的解析都失败时,就会使用宿主机dns解析(一般是访问外网的时候)
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐