сердечники терпят крах из-за обнаружения петли - PullRequest
0 голосов
/ 12 декабря 2018

Мы сталкиваемся с очень странной проблемой сбоя 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
}
  • добавление IP-адреса DNS-сервера вместо /etc/resolv.conf файла в corednsсм proxy . <DNS_IP_ADDR>

  • проверенная конфигурация кубелета:

[root@qa078 network-scripts]# cat /var/lib/kubelet/config.yaml | grep resolv

resolvConf: /etc/resolv.conf

Любые предложения / идеи будут очень признательны.

...