Сердечники терпят крах из-за обнаружения петли
Мы сталкиваемся с очень странной проблемой с неудачными сердечниками в kubernetes: сердечки всегда поражают состояние: 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
все работает нормально, стручки Cornns работают, Kube-DNS работает, как и ожидалось. Как только мы перезагружаем сервер, cornns pods начинает зависать со следующим сообщением в журналах:
[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
Мы определили, что плагин loop of coredns deceted loop и, следовательно, вышел, но мы не можем найти, где находится этот цикл. Другими словами, нигде не определен цикл, касающийся DNS в хост-системе. - мы не используем systemd-resolved
совсем. - наш сервис kubelet использует оригинальные /etc/resolv.conf
файл - наш /etc/resolv.conf
Файл не содержит ничего относительно: localhost, 127.0.0.0/53, :::1
Наши cornns см выглядит следующим образом:
[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
удаляется из см.
Мы также попытались: - исключить localhost (наверняка) из вышестоящего DNS:
proxy . /etc/resolv.conf {
exclude 127.0.0.0/8
}
добавление IP-адреса DNS-сервера вместо
/etc/resolv.conf
файл в cornns смproxy . <DNS_IP_ADDR>
проверил конфигурацию кублета:
[root@qa078 network-scripts]# cat /var/lib/kubelet/config.yaml | grep resolv
resolvConf: /etc/resolv.conf
Любые предложения / идеи будут очень признательны.