идея подкладывать для kubelet через --resolv-conf кастомный resolv.conf,
в котором указаны два DNS сервера: nodelocaldns IP и кластерный ДНС.
Это на случай если упадет локальный и чтобы не было потерь у подов.
Но тут вспоминается мой опыт с libevent (сишная либа популярная): если эта сволочь закэшила "похой" ДНС-сервер, то она еще очень долго пытается к нему ходить (забыл подробности).
Вопрос: как сделать так, чтобы падение nodelocaldns не аффектило поды?
@yamlcoder @zh_erzh @LuckySB вам вроде была интересна эта тема )) присоединяйтесь к дискуссии, если есть желание )
Никак, для себя решил, что днс должен быть один и это unbound на каждой ноде. Так меньше сюрпризов и проще дебажить. Вообще, чем меньше ходить через kubeproxy (clusterip), тем лучше. kubernetes.default.svc.cluster.local тоже нужно переопределять на локальный ип, на котором енвой, через который кублет/kubeproxy/calico-node ходят в аписервер
Я тут подумал, а если разворачивать coredns через daemonset, и с помощью service Topology в 1.17, направлять трафик dns на под, который на той же ноде. Правда может быть сильно не равномерно распределена нагрузка. Но зато кеши не нужны. Ну или просто вместо кеша использовать реальные coredns, и указывать подам ходить за DNS на ту же ноду
Обсуждают сегодня