这个错误
[FATAL] plugin/loop: Seen "HINFO IN 6900627972087569316.7905576541070882081." more than twice, loop detected
是当CoreDNS在解析配置中检测到循环时引起的,这是预期的行为。您遇到了以下问题:
https://github.com/kubernetes/kubeadm/issues/1162
https://github.com/coredns/coredns/issues/2087
hacky解决方案:禁用CoreDNS循环检测
编辑CoreDNS配置图:
kubectl -n kube-system edit configmap coredns
使用删除或注释掉该行
loop,然后保存并退出。
然后删除CoreDNS Pod,以便可以使用新的配置创建新的Pod:
kubectl -n kube-system delete pod -l k8s-app=kube-dns
在那之后一切都会好起来的。
首选解决方案:删除DNS配置中的循环
首先,检查您是否正在使用
systemd-resolved。如果您正在运行Ubuntu 18.04,则可能是这种情况。
systemctl list-unit-files | grep enabled | grep systemd-resolved
如果是,请检查
resolv.conf集群使用哪个文件作为参考:
ps auxww | grep kubelet
您可能会看到类似以下的行:
/usr/bin/kubelet ... --resolv-conf=/run/systemd/resolve/resolv.conf
重要的部分是
--resolv-conf-我们确定是否使用了systemd resolv.conf。
如果是resolv.conf
的systemd
,请执行以下操作:
检查的内容
/run/systemd/resolve/resolv.conf以查看是否有类似的记录:
nameserver 127.0.0.1
如果存在
127.0.0.1,则它是导致循环的原因。
要摆脱它,您不应编辑该文件,而应检查其他位置以使其正确生成。
检查下的所有文件,
/etc/systemd/network以及是否找到类似的记录
DNS=127.0.0.1
删除该记录。还要检查
/etc/systemd/resolved.conf并根据需要执行相同的操作。确保至少配置了一台或两台DNS服务器,例如
DNS=1.1.1.1 1.0.0.1
完成所有这些之后,重新启动systemd服务以使更改生效:systemctl restart systemd-networkd systemd-
resolved
之后,确认文件中
DNS=127.0.0.1不再存在该
resolv.conf文件:
cat /run/systemd/resolve/resolv.conf
最后,触发DNS容器的重新创建
kubectl -n kube-system delete pod -l k8s-app=kube-dns
简介: 解决方案涉及从主机DNS配置中消除看起来像DNS查找循环的内容。不同的resolv.conf管理器/实现之间的步骤有所不同。



