k8s中基于alpine的pod无法解析域名问题

现象

在pod内无法解析指定域名

# 执行ping
bash-4.4# ping xx-xx-svc-0.xxx-fcp.svc.cluster.local
ping: bad address 'xx-xx-svc-0.xxx-fcp.svc.cluster.local'

排查经过

# 执行nslookup
bash-4.4# nslookup xx-xx-svc-0.xxx-fcp.svc.cluster.local
Server:         172.43.0.10
Address:        172.43.0.10#53

** server can't find xx-xx-svc-0.xxx-fcp.svc.cluster.local.localdomain: SERVFAIL

通过nslookup的输出结果可知,无法解析该域名的原因是系统默认将域名补全为.localdomain结尾,导致域名无法解析

# 查看pod内的/etc/resolv.conf
bash-4.4# cat /etc/resolv.conf 
nameserver 172.43.0.10
search xxx-fcp.svc.cluster.local svc.cluster.local cluster.local localdomain
options ndots:5

在/etc/resolv.conf中,option ndots:5表示设置了DNS解析器的ndots参数为5。这意味着当解析器尝试解析一个域名时,只有在该域名中至少包含5个点(“.”)时,才会将其视为绝对域名进行解析。否则被视为不完整域名,会按照search的配置顺序,从左到有一次补全并解析

# 通过host命令可以查看域名补全解析过程
bash-4.4# host -v  xx-xx-svc-0.xxx-fcp.svc.cluster.local
Trying "xx-xx-svc-0.xxx-fcp.svc.cluster.local.treasurer-fcp.svc.cluster.local"
Trying "xx-xx-svc-0.xxx-fcp.svc.cluster.local.svc.cluster.local"
Trying "xx-xx-svc-0.xxx-fcp.svc.cluster.local.cluster.local"
Trying "xx-xx-svc-0.xxx-fcp.svc.cluster.local.localdomain"  # 该条已经满足5个点,不会再解析xx-xx-svc-0.xxx-fcp.svc.cluster.local. 但是pod中相同的/etc/resolv.conf配置,在centos7基础镜像中又好像能解析,待验证
Host xquant-xir-svc-0.xquantns-fcp.svc.cluster.local.localdomain not found: 2(SERVFAIL)
# 查看pod所在服务器的/etc/resolv.conf
bash-4.4# cat /etc/resolv.conf 
search localdomain

pod解析正常的服务器节点上,该文件内容为空。可见主机上的search localdomain会被加载到pod内,对域名解析产生干扰

解决办法

1. 清理主机上的/etc/resolv.conf
# > /etc/resolv.conf
2. pod内修改/etc/resolv.conf配置文件,移除search的localdomain
3. /etc/resolv.conf修改ndots为4

冷知识

在 DNS 中,末尾加上句点(.)通常表示绝对域名(Fully Qualified Domain Name,FQDN)。当域名以句点结尾时,表示该域名是一个绝对完整的域名,不会再添加本地搜索域或其他默认域名后缀。

相关推荐

  1. k8s基于alpinepod无法解析域名问题

    2024-02-23 18:14:05       52 阅读
  2. K8s Pod无法启动5个常见问题总结

    2024-02-23 18:14:05       53 阅读
  3. K8S系列文章之 [Alpine基础环境配置]

    2024-02-23 18:14:05       60 阅读
  4. K8S Pod 常见问题

    2024-02-23 18:14:05       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 18:14:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 18:14:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 18:14:05       82 阅读
  4. Python语言-面向对象

    2024-02-23 18:14:05       91 阅读

热门阅读

  1. Visual Studio Code 实用快捷键

    2024-02-23 18:14:05       51 阅读
  2. 抖店注册个体还是个人?哪个比较适合新手?

    2024-02-23 18:14:05       43 阅读
  3. IP 电话

    IP 电话

    2024-02-23 18:14:05      47 阅读
  4. 【PTA|编程题|期末复习|part 1】结构体(注释详细)

    2024-02-23 18:14:05       50 阅读
  5. commander插件

    2024-02-23 18:14:05       49 阅读
  6. uniapp 引入h5页面

    2024-02-23 18:14:05       41 阅读
  7. uni-app页面通讯的基本使用

    2024-02-23 18:14:05       49 阅读