Мы сталкиваемся с очень странной проблемой сбоя coredns в kubernetes: corednes всегда находится в состоянии: CrashLoopBackOff
версия coredns: 1.2.2
версия kubernetes: v1.12.3
версия докера: 18.06.1-ce
ОС: CentOS Linux release 7.5.1804 (Core)
CNI: weave 2.5.0
Когда мы загружаем kubernetes с помощью kubeadm
, все работает нормально, пакеты coredns работают и работают, а kube-dns работает как положено.Как только мы перезагружаем сервер, пакеты coredns начинают аварийно завершать работу со следующим сообщением в журналах:
[root@qa065 ~]# kubectl logs coredns-576cbf47c7-6vxd4 -n kube-system
.:53
2018/12/12 13:33:16 [INFO] CoreDNS-1.2.2
2018/12/12 13:33:16 [INFO] linux/amd64, go1.11, eb51e8b
CoreDNS-1.2.2
linux/amd64, go1.11, eb51e8b
2018/12/12 13:33:16 [INFO] plugin/reload: Running configuration MD5 = f65c4821c8a9b7b5eb30fa4fbc167769
2018/12/12 13:33:22 [FATAL] plugin/loop: Seen "HINFO IN 7087784449798295848.7359092265978106814." more than twice, loop detected
Мы определили, что плагин цикла coredns обманул цикл и, следовательно, вышел, но мы не можем найти, где находится этот цикл.Другими словами, нигде не определен цикл, касающийся DNS в хост-системе.- мы не используем systemd-resolved
вообще.- наш сервис kubelet использует оригинальный /etc/resolv.conf
файл - наш /etc/resolv.conf
файл не содержит ничего относительно: localhost, 127.0.0.0/53, :::1
Наши cornns cm следующие:
[root@qa065 ~]# kubectl describe cm coredns -n kube-system
Name: coredns
Namespace: kube-system
Labels: <none>
Annotations: <none>
Data
Corefile:
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
Events: <none>
Когда мы удаляемloop
из coredns cm, модули coredns запускаются и работают без проблем, но связь между модулями перестает работать (kube-dns потерял ep и не может разрешить имена служб в ips).напримеру нас есть 2 модуля, которые должны общаться друг с другом (сервер Prometheus + графана), и это не работает после удаления loop
из cm.
Мы также пытались: - исключить localhost (наверняка) из вышестоящего DNS:
proxy . /etc/resolv.conf {
exclude 127.0.0.0/8
}
[root@qa078 network-scripts]# cat /var/lib/kubelet/config.yaml | grep resolv
resolvConf: /etc/resolv.conf
Любые предложения / идеи будут очень признательны.