裸机 kubernetes DNS 不转发

裸机 kubernetes DNS 不转发

我为自己的教育目的设置了一个裸机 kubernetes 集群。它有三台虚拟机 - 一台主虚拟机、两台从虚拟机,运行 Ubuntu 20.04。我在 pod 转发 DNS 请求时遇到了问题。

CoreDNS 正在运行

kubectl get po --all-namespaces |grep dns
kube-system      coredns-74ff55c5b-cdvcv                   1/1     Running   11         4d

它具有预期的集群 IP

kubectl get svc kube-dns -n kube-system
kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   4d

但是它无法解析名称,例如在主节点上的以下尝试:

nslookup github.com 10.96.0.10
Server:     10.96.0.10
Address:    10.96.0.10#53

** server can't find github.com: SERVFAIL

如果我编辑 ConfigMap.yaml

forward . /etc/resolv.conf {
    max_concurrent 1000
}

这样forward . 8.8.8.8 {它就可以工作了。

nslookup github.com 10.96.0.10
Server:     10.96.0.10
Address:    10.96.0.10#53

Non-authoritative answer:
Name:   github.com
Address: 140.82.112.3

但是,这显然无法解析私有 LAN DNS 名称。我需要 CoreDNS 转发到它运行的机器的 DNS。

我正在运行 k8s 1.20.3,据我所知,由于 Ubuntu 的存根,它不再存在无限循环的问题resolv.conf。此外,我尝试过强制删除符号链接/etc/resolv.conf并重新创建它以指向/run/systemd/resolve/resolv.conf每个虚拟机,重新启动每个虚拟机,但没有任何改善。

我发现 pod 无法 ping 主机的 DNS(192.168.149.2),所以看起来好像是问题所在,但我不知道该怎么办。

我还应该关注什么?

答案1

已解决马特的线索。

请密切关注初始集群设置。在线说明可能会导致您忽略重叠的 IP 范围。Kubernetes 私有 IP 必须与集群外部的私有 IP 分开。

kubectl run curl-busybox --image=radial/busyboxplus:curl -i --tty --rm使用像和 这样的工具curlnslookupip a可以为 pod 的网络视图提供一定的可见性。

相关内容