Ставили как обычно при помощи kubespray release-2.18. Но после установки заметили, что поды nodelocaldns периодически падают.
Начали смотреть глубже. Оказалось, что kubespray на всех нодах кластера поменял файлы /etc/resolv.conf на вот такое:
1 2 3 4 5 6 7 8 9 10 |
# Ansible entries BEGIN domain cluster.local search default.svc.cluster.local svc.cluster.local nameserver 169.254.25.10 nameserver 10.233.0.3 nameserver 10.80.20.11 options ndots:2 options timeout:2 options attempts:2 # Ansible entries END |
Первый nameserver — это ip nodelocaldns на ноде. Второй — это ip coredns. Третий — DNS сервер провайдера.
В итоге мы получили петлю DNS запросов. Разумеется DNS в кубере не работает. Ну и сам кубер получается не рабочий.
Долго искали, что за фигня. В начале Декабря кластера ставились без проблем. В конце Января всё пропало. Оказалось, что какой то олень из команды kubespray в sample inventory, в файле k8s-cluster.yml заменил значение по умолчанию у параметра:
1 2 |
# Can be docker_dns, host_resolvconf or none resolvconf_mode: host_resolvconf |
Раньше там стояло docker_dns. Но видать в связи с переездом с докера на containerd оленю не понравилось слово docker в значении параметра и он его не глядя заменил.
Ребята из kubespray обещали исправить