nslookup NXDOMAIN 错误,即使名称已解析,返回代码 1

问题描述 投票:0回答:0

我有一些初始化容器无法解析其他容器的服务名称,因为 nslookup 中的某些行为似乎是错误的:

我的初始化容器只是尝试“until nslookup h2agent”(h2agent 是我的服务名称),但抛出这个输出:

/ #
/ # nslookup h2agent
Server:         10.96.0.10
Address:        10.96.0.10:53

** server can't find h2agent.cluster.local: NXDOMAIN

** server can't find h2agent.svc.cluster.local: NXDOMAIN

Name:   h2agent.ns-ct-h2agent.svc.cluster.local
Address: 10.105.47.206

** server can't find h2agent.cluster.local: NXDOMAIN

** server can't find h2agent.svc.cluster.local: NXDOMAIN

/ # 
/ # echo $?
1

这是我在init容器中的resolv.conf文件:

/ # cat /etc/resolv.conf
nameserver 10.96.0.10
search ns-ct-h2agent.svc.cluster.local svc.cluster.local cluster.local 
options ndots:5

也就是说,即使解析提供的搜索后缀之一(h2agent.ns-ct-h2agent.svc.cluster.local),实用程序返回 1,因为其他人都失败了。这是正确的行为吗?我认为 nslookup 在解决之前尝试了不同的后缀,如果解决了则返回代码 0,而不管其他人是否没有解决。至少我认为这是我以前在 busybox 旧图像中的行为,因为这个问题使我的组件测试由于 init 容器而无法启动,因为几天以来没有任何改变(但使用 busybox 的最新图像是 1 周前更新的)。

我的修复包括将

<namespace>.svc.cluster.local
添加到我的初始容器的部署清单中的服务名称:

until nslookup h2agent.ns-ct-h2agent.svc.cluster.local ...

但我不想那样做。

我应该用其他实用程序替换 nslookup 吗? 当 IP 被解析时,我如何强制 nslookup 返回 0?

我测试了基于 alpine 和 ubuntu 最新 x86_64 图像的 init 容器,但同样的问题,所以这似乎是 nslookup 规范的变化。

使用 minikube 版本:v1.23.2,kubectl v1.22.4

kubernetes dns minikube busybox nslookup
© www.soinside.com 2019 - 2024. All rights reserved.