You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Busybox版nslookup无法自动添加.cluster.local后缀的解决方法

Kubernetes Pod DNS解析异常排查与解决

问题现象

  1. 搭载原生nslookup工具的Pod,解析目标服务域名完全正常:
mark@L-R910LPKW:~$ k -n chip exec deployments/toolbox -- sh -c 'ls -l $(which nslookup) ; nslookup default-redis-redis.system-d-kb-redis.svc'
-rwxr-xr-x    1 root     root        100600 Feb 13  2024 /usr/bin/nslookup
Server:         10.0.0.10
Address:        10.0.0.10#53

Name:   default-redis-redis.system-d-kb-redis.svc.cluster.local
Address: 10.0.6.5

mark@L-R910LPKW:~$
  1. 基于Busybox的RedisInsight Pod(镜像redislabs/redisinsight:2.54.0,通过TrueCharts Helm Chart部署)解析同一域名失败,应用层同时返回getaddrinfo ENOTFOUND错误:
mark@L-R910LPKW:~$ k exec deployments/redis-insights-redisinsight -- sh -c 'ls -l $(which nslookup) ; nslookup default-redis-redis.system-d-kb-redis.svc'
lrwxrwxrwx    1 root     root            12 Jun 18 14:16 /usr/bin/nslookup -> /bin/busybox
Server:         10.0.0.10
Address:        10.0.0.10:53

** server can't find default-redis-redis.system-d-kb-redis.svc: NXDOMAIN

** server can't find default-redis-redis.system-d-kb-redis.svc: NXDOMAIN

command terminated with exit code 1
mark@L-R910LPKW:~$

排查与解决方法

1. 核对Pod的DNS配置

先导出异常Pod的DNS配置,和正常Pod做对比:

# 导出异常Pod的resolv.conf
k exec deployments/redis-insights-redisinsight -- cat /etc/resolv.conf
# 导出正常Pod的resolv.conf做对比
k -n chip exec deployments/toolbox -- cat /etc/resolv.conf

重点检查:

  • nameserver是否指向集群DNS服务(如你的环境中的10.0.0.10)
  • search域是否包含system-d-kb-redis.svc.cluster.local、svc.cluster.local等必要搜索规则

若搜索域缺失,需检查Pod的dnsPolicy配置,或调整Helm Chart的对应参数,确保Pod继承集群默认DNS搜索逻辑。

2. 测试完整域名解析

Busybox的nslookup对搜索域的处理逻辑和原生工具存在差异,先测试完整域名验证:

k exec deployments/redis-insights-redisinsight -- nslookup default-redis-redis.system-d-kb-redis.svc.cluster.local

如果完整域名能正常解析,说明是搜索域配置或Busybox工具的短域名解析逻辑问题。此时可临时让应用使用完整域名连接Redis,或调整Pod的DNS搜索域配置。

3. 调整Pod的DNS策略

通过修改Pod的dnsPolicy或添加dnsConfig强制补充搜索域,可在Helm Chart的values.yaml中调整对应配置:

spec:
  template:
    spec:
      dnsPolicy: "ClusterFirst"
      dnsConfig:
        searches:
          - system-d-kb-redis.svc.cluster.local
          - svc.cluster.local
          - cluster.local

4. 检查集群DNS服务状态

确认CoreDNS(或集群DNS组件)运行正常:

# 查看DNS Pod状态
k get pods -n kube-system -l k8s-app=kube-dns
# 查看DNS日志排查异常
k logs -n kube-system -l k8s-app=kube-dns

排查是否存在DNS服务崩溃、配置错误或日志报错,确保DNS组件能正常处理解析请求。

5. 替换Busybox工具验证(临时测试)

如果怀疑是Busybox工具本身的问题,可在Pod内安装原生DNS工具验证:

# 若镜像基于Debian/Ubuntu
k exec deployments/redis-insights-redisinsight -- apt update && apt install -y dnsutils
# 若镜像基于Alpine
k exec deployments/redis-insights-redisinsight -- apk add bind-tools

安装完成后重新测试解析,确认是否为工具本身导致的问题。

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:40:12