当我在docker容器上运行nslookup
时,出现此错误
nslookup 10.0.96.xx
nslookup: can't resolve '(null)': Name does not resolve
Name: 10.0.96.xx
Address 1: 10.0.96.xx
我已阅读到问题出在docker上,该问题将其注入resolv.conf
:
nameserver 10.109.0.xx
nameserver 10.96.0.xx
search devlan.xxx.corp poc.svc.cluster.local svc.cluster.local cluster.local
options ndots:2 edns0
使用kubernetes,我尝试用PodConfFile.yaml
上的以下参数覆盖它。
spec:
dnsPolicy: "None"
# dnsPolicy: ClusterFirst
dnsConfig:
nameservers:
- 10.109.0.xx
- 10.96.0.xx
searches:
- devlan.xxx.corp
- poc.svc.cluster.local
- svc.cluster.local
- cluster.local
options:
- name: ndots
value: "2"
- name: edns0
您对解决此问题有任何建议吗?
答案 0 :(得分:2)
我找到了解决此问题的方法。在您的Pod上删除此参数
名称服务器选项搜索
并添加一个
spec:
dnsPolicy: Default
它将直接继承DNS配置。
您将能够ping外部服务。
答案 1 :(得分:0)
否则,我发现了另一个更清洁的解决方案
您的pod是否无法解析URL,并且您的 /etc/resolv.conf
中有@IP 10.0.96.XXnslookup 10.0.96.xx
nslookup: can't resolve '(null)': Name does not resolve
要修复它:
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
用您的IP更改@IP地址
Environment="KUBELET_DNS_ARGS=--cluster-dns=YOUR-IP-DNS --cluster-domain=cluster.local"
然后重新启动kublet
systemctl restart kubelet.service
我希望这会对您有所帮助;)
您可以从Pod.yaml中删除
DnsPolicy