CoreDNS это DNS‑сервер, который обеспечивает разрешение доменных имён для Kubernetes‑кластеров через цепочку плагинов.
CoreDNS — это программное обеспечение с открытым исходным кодом и является частью CNCF. Оно предоставляет возможность облачным сервисам обнаруживать друг друга в cloud native развёртываниях. Каждый из плагинов, цепочкой соединённых CoreDNS, предоставляет определённую функцию DNS. Вы можете интегрировать CoreDNS только с теми плагинами, которые вам нужны, чтобы сделать его быстрым, эффективным и гибким. При использовании в кластере Kubernetes CoreDNS может автоматически обнаруживать сервисы в кластере и обеспечивать разрешение доменных имён для этих сервисов. Работая с DNS‑серверами, CoreDNS может разрешать внешние доменные имена для рабочих нагрузок в кластере.
Это дополнение устанавливается по умолчанию во время создания кластера.
Kubernetes поддерживает CoreDNS в качестве официального DNS по умолчанию для всех кластеров в дальнейшем.
Официальный веб‑сайт CoreDNS: https://coredns.io/
Сообщество с открытым исходным кодом: https://github.com/coredns/coredns
Для получения подробностей см DNS.
Чтобы правильно запустить CoreDNS или обновить CoreDNS в кластере, убедитесь, что количество доступных узлов в кластере больше либо равно количеству экземпляров CoreDNS и все экземпляры CoreDNS работают. В противном случае дополнение будет работать некорректно или обновление завершится неудачей.
Это дополнение установлено по умолчанию. Если оно было удалено по какой-либо причине, вы можете переустановить его, выполнив следующие шаги:
Малый может обрабатывать до 2500 внешних и 10,000 внутренних доменных имён QPS. Средняя спецификация может обрабатывать до 5000 внешних и 20,000 внутренних доменных имён QPS. Большая спецификация может обрабатывать до 10,000 внешних и 40,000 внутренних доменных имён QPS.
Узлы | Рекомендованный QPS | Подов | Запрошенные vCPU | Лимит vCPU | Запрошенная память | Лимит памяти |
|---|---|---|---|---|---|---|
50 | 2500 | 2 | 500m | 500m | 512 MiB | 512 MiB |
200 | 5000 | 2 | 1000m | 1000m | 1024 MiB | 1024 MiB |
1000 | 10000 | 2 | 2000m | 2000m | 2048 MiB | 2048 MiB |
2000 | 20000 | 4 | 2000m | 2000m | 2048 MiB | 2048 MiB |
Параметр | Описание |
|---|---|
Заглушка домена | Сервер имен домена для пользовательского доменного имени. Формат — пара «ключ‑значение». Ключ — суффикс доменного имени, а значение — один или несколько DNS‑IP‑адресов, например, acme.local -- 1.2.3.4,6.7.8.9. Для получения подробностей см. Настройка заглушки домена для CoreDNS. ВНИМАНИЕ: Прописные буквы не допускаются в пользовательских доменных именах. |
Расширенные настройки параметров |
Пример:
|
Имя Плагина | Тип | Описание |
|---|---|---|
bind | Конфигурация по умолчанию | IP-адрес хоста, прослушиваемый CoreDNS. Сохраните значение по умолчанию {$POD_IP}. Для получения подробностей см bind. |
cache | Конфигурация по умолчанию | Включает кэш DNS. Для получения подробностей см cache. Если версия дополнения 1.25.10 или более поздняя, кеш servfail может быть отключён. Чтобы отключить кеш servfail, задайте configBlock to servfail 0. В противном случае единица кэша servfail — секунда, и её нельзя опустить. |
ошибки | Конфигурация по умолчанию | Ошибки записываются в stdout. Для получения деталей см ошибки. |
здоровье | Конфигурация по умолчанию | Проверка состояния для CoreDNS. {$POD_IP}:8080 прослушивается. Сохраните настройку по умолчанию. В противном случае проверка состояния CoreDNS завершится ошибкой, и дополнение будет перезапускаться многократно. Для получения деталей см здоровье. |
готово | Конфигурация по умолчанию | Определяет, готов ли сервер backend принимать трафик. {$POD_IP}:8081 прослушивается. Если сервер backend не готов, CoreDNS приостановит разрешение DNS, пока сервер не станет готов. Для получения деталей см готово. |
kubernetes | Конфигурация по умолчанию | плагин CoreDNS Kubernetes, который обеспечивает возможность парсинга службы в кластере. Подробнее см kubernetes. |
балансировка нагрузки | Конфигурация по умолчанию | Round-robin DNS балансировщик, который случайным образом меняет порядок записей A, AAAA и MX в ответе. Подробнее см балансировка нагрузки. |
prometheus | Конфигурация по умолчанию | API для получения метрик CoreDNS. {$POD_IP}:9153 прослушивается по умолчанию. Сохраните настройку по умолчанию. В противном случае Prometheus не сможет собрать метрики CoreDNS. Подробнее см Prometheus. |
перенаправление | Конфигурация по умолчанию | Перенаправляет любые запросы, которые не находятся в домене кластера Kubernetes, к предопределённым резольверам (/etc/resolv.conf). Для получения подробной информации смотрите перенаправление. |
перезагрузка | Конфигурация по умолчанию | Автоматически перезагружает изменённые Corefiles. После изменения ConfigMap подождите две минуты, чтобы изменения вступили в силу. Для получения подробной информации смотрите перезагрузка. |
лог | Расширенная конфигурация | Включает логирование CoreDNS. Для получения подробной информации смотрите лог. Ниже приведён пример:
|
шаблон | Расширенная конфигурация | Быстрый шаблон ответа, где AAAA указывает запрос IPv6. Если NXDOMAIN возвращается в rcode ответ, результат разрешения IPv6 не возвращается. Для получения подробностей см шаблон. Следующий пример:
|
Параметр | Описание |
|---|---|
Развертывание Multi-AZ |
|
Привязка к узлам |
|
Терпимость | Использование как taints, так и tolerations позволяет (не принудительно) add-on Deployment быть запланированным на узел с соответствующими taints и управляет политиками выселения Deployment после того, как узел, где находится Deployment, будет taint'ирован. add-on добавляет политику tolerance по умолчанию для node.kubernetes.io/not-ready и node.kubernetes.io/unreachable taints соответственно. Окно времени tolerance составляет 60s. Подробности см. Настройка политик tolerance. |
Компонент | Описание | Тип ресурса |
|---|---|---|
CoreDNS | DNS‑сервер для кластеров | Развертывание |
Если вы установите дополнение CoreDNS, конфигурация просмотра Corefile недоступна. Эта конфигурация поддерживается только при редактировании или обновлении дополнения.
После включения функции ConfigMap CoreDNS в пространстве имён kube-system будет непосредственно сконфигурирован в формате Corefile. Любые существующие конфигурации stub‑домена и параметры, такие как parameterSyncStrategy, серверы, и Апстрим_nameservers в расширенной конфигурации более не будет действовать. Важно проверить, что конфигурация Corefile точна.
Для описания формата Corefile см Конфигурация.
Для каждого pod можно настроить DNS‑политики. Kubernetes поддерживает DNS‑политики По умолчанию, ClusterFirst, ClusterFirstWithHostNet, и Нет. Для подробностей смотрите DNS для сервисов и подов. Эти политики задаются в dnsPolicy поле в pod-specific.
Маршрутизация
Без конфигураций stub domain: Любой запрос, который не совпадает с настроенным суффиксом домена кластера, например www.kubernetes.io, перенаправляется к Апстрим DNS серверу, унаследованному от узла.
С конфигурациями stub domain: Если настроены stub domains и upstream DNS servers, DNS запросы направляются согласно следующему потоку:
Рисунок 1 Маршрутизация
