首先,让我们看一下具有“真实”
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:~$
按预期工作。 现在是基于 busybox 的 pod:
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:~$
不知道该怎么做。
第二个 Pod 使用以下图像:
mark@L-R910LPKW:~$ k get deployments/redis-insights-redisinsight -o yaml | yq .spec.template.spec.containers[].image
redislabs/redisinsight:2.54.0@sha256:938c50cf95f7389bc93ce4d26e6eed6855736a8e5b5b05f7e640f01d1be2d514
mark@L-R910LPKW:~$
提供的 HELM 图表来部署它
这不仅仅是 nslookup 实用程序的问题。 DNS 解析在该 Pod 上无法按预期工作。当在那里运行的应用程序尝试解析
default-redis-redis.system-d-kb-redis.svc
的地址时,它会返回 getaddrinfo ENOTFOUND 错误。
所以我尝试用最新的
busybox
图像重现它,但我做不到。我什至无法用有问题的 Redis Insights 图像(redislabs/redisinsight:2.54.0
)按原样重现它。但是,它确实可以通过基于同一映像的 Redis Insights 部署进行重现,但源自相应的 HELM 图表。
事实证明部署包含以下内容:
.spec.template.spec
:
dnsConfig:
options:
- name: ndots
value: "1"
我要去寻找这是什么,但这是根本原因。一旦我删除它,
.cluster.local
后缀问题就消失了。