kuberntes 无法解析dns问题分析及解决

测试环境中发现, 当 pod 调度到指定 node 后, pod 内部无法解析 dns, 但可以通过ip直接ping 通. 通过ip访问一切正常.

尝试使用nslookup 解析返回结果 NODATA.

后面发现 kubernetes 默认会给 /etc/resolv.conf 文件新增 4 个搜索域

search huoys.svc.cluster.local svc.cluster.local cluster.local <hostname>

其中第四个域导致出现问题, 主要因为出问题的 node 节点主机名为 git.hys.com kubernetes 自动添加了 hys.com 搜索域:

search huoys.svc.cluster.local svc.cluster.local cluster.local hys.com

hys.com 是一个真实存在的域名, 以解析 baidu.com 为例, 在搜索 baidu.com.hys.com 时, dns 返回 NODATA, dns 认为找到结果不使用顶级域继续查找.导致dns解析失败.

解决方案

有两种解决方案

  1. 通过设置 options ndots:1 来解决, 但这个方案会导致 kubernetes 内部 dns 只能使用一级,不能包含 .
  2. 修改 node 的主机名.

目前我们考虑使用第二种方案处理, 但 kubernetes 修改主机名会导致一些问题, 正在查找解决方案.

猜你喜欢

转载自blog.csdn.net/kunyus/article/details/88596356