Pull to refresh

Comments 6

Добавлю что ndots=1 скорее всего не поломает резолв внутри кластера. Сначала будет сделан запрос без добавления элементов из search и, если он не вернет результатов, будет использоваться путь поиска.
ndots=5 сделали чтобы не перегружать корневые dns сервера и чтобы избежать потенциальной mitm атаки.


Но по мне красивее было бы логику поиска перекинуть на локальный dns server (где есть информация о ресурсах) и тем самым избежать лишнего сетевого трафика.

Имеешь в виду, что нужно на машине непосредственно использовать ДНС сервер (BIND9 например)?
Тут много нюансов может возникнуть, например нужно будет дублировать ДНС сервера на всех нодах кластера, на случай отказа.
Второй момент, что нужно будет следить за всеми ДНС серверами и поддерживать их конфиги в одинаковом состоянии, что уже сложнее, чем обновлять конфиги пода с CoreDNS.
Третьим будет такой момент, что при ошибке обновления образуется состояние при котором будем получать разные ответы от разных ДНС. Короче надо будет еще пилить алгоритм консенсуса между ними и выбор мастера.

Зачем на поднимать на машине? Уже есть CoreDNS.
Как сделано сейчас:
для сервиса foo в namespace hello создается одна запись:
foo.hello.svc.cluster.local.
В подах в resolv.conf такое:
search hello.svc.cluster.local svc.cluster.local cluster.local.


  • foo 1 запрос.
  • foo.hello 2 запроса
  • foo.hello.svc 3 запроса
  • mrkaran.dev 4 запроса (3 лишних).

Варианты уменьшения лишних запросов.
1) Добавлять записи днс для каждого пути из search. (самый простой и некостыльный)
Для foo в namespace hello создавать записи в днс.


  • foo.hello.svc.cluster.local.
  • foo.hello.svc.
  • foo.hello.

Search при этом обрезать до search hello.svc.cluster.local


  • foo 1 запрос.
  • foo.hello 2 запроса
  • foo.hello.svc 2 запроса
  • mrkaran.dev 2 запроса (1 лишний).
    Уже значительно легче для приложений которые интенсивно ходят в интернет. Без сильного оверхеда.

2) отказаться от search полностью. В дополнение предыдущему варианту добавлять запись в днс без namespace. Но тут надо либо поднимать инстанс DNS в каждом namespace, либо пилить костыли опирающиеся на сеть (source ip, destination ip).

Upd: первый вариант + ndots:1 решает все проблемы.

Понял, меня смутила фраза
локальный dns server
. Подумал, что локальный по отношению к хосту на котором под расположен.

Также если хотите ужаснуться — в гугл клаудде в кубере в search 5 записей по умолчанию (3 куберовские, 2 от гуглового проекта)

Sign up to leave a comment.