CoreDNS является DNS‑сервером, который обеспечивает разрешение доменных имён для кластеров Kubernetes через цепочку плагинов.
CoreDNS — это программное обеспечение с открытым исходным кодом, являющееся частью CNCF. Оно предоставляет возможности для обнаружения облачными сервисами друг друга в облачно‑нативных развертываниях. CoreDNS использует архитектуру цепочки плагинов, позволяющую гибко настраивать и эффективно обрабатывать DNS‑запросы за счёт комбинирования плагинов по мере необходимости. При использовании в кластере Kubernetes CoreDNS может автоматически обнаруживать сервисы в кластере и обеспечивать разрешение доменных имён для этих сервисов. Работая с DNS‑серверами, CoreDNS может разрешать внешние доменные имена для рабочих нагрузок в кластере.
Это дополнение устанавливается по умолчанию при создании кластера.
Kubernetes поддерживает CoreDNS в качестве официального DNS по умолчанию для всех кластеров в дальнейшем.
Официальный веб‑сайт CoreDNS: https://coredns.io/
Сообщество с открытым исходным кодом: https://github.com/coredns/coredns
Для получения подробной информации см. DNS.
Чтобы CoreDNS работал корректно или обновлялся в кластере, убедитесь, что количество доступных узлов в кластере больше или равно количеству CoreDNS pods и все CoreDNS pods находятся в состоянии Running. В противном случае дополнение будет работать некорректно или обновление завершится неудачей.
Это дополнение устанавливается по умолчанию. Если оно было удалено по какой‑то причине, вы можете переустановить его, выполнив следующие действия:
Малый вариант может обрабатывать до 2500 внешних и 10 000 внутренних доменных имен QPS. Средняя спецификация может обрабатывать до 5000 внешних и 20 000 внутренних доменных имен QPS. Большая спецификация может обрабатывать до 10 000 внешних и 40 000 внутренних доменных имен QPS.
Nodes | Recommended QPS | Pods | Requested vCPUs | vCPU Limit | Requested Memory | Memory Limit |
|---|---|---|---|---|---|---|
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 |
Параметр | Описание |
|---|---|
Stub Domain | Сервер доменных имен для пользовательского доменного имени, представленный в виде пар ключ‑значение. Ключ — суффикс доменного имени, значение — один или несколько IP‑адресов DNS, например, acme.local -- 1.2.3.4,6.7.8.9. Для получения подробной информации см. Configuring the Stub Domain for CoreDNS. ПРЕДУПРЕЖДЕНИЕ: В пользовательских доменных именах не допускаются заглавные буквы. |
Extended Parameter Settings |
Пример:
|
Plugin Name | Type | Description |
|---|---|---|
bind | Конфигурация по умолчанию | Хост IP-адрес, прослушиваемый CoreDNS. Сохраните значение по умолчанию {$POD_IP}. Для получения подробной информации см. bind. |
cache | Конфигурация по умолчанию | Включает кэш DNS. Для получения подробной информации см. cache. Если версия дополнения 1.25.10 или новее, кэш servfail можно отключить. Чтобы отключить кэш servfail, задайте configBlock значение servfail 0. В противном случае единица измерения кэша servfail — секунда, и её нельзя опустить. |
ошибки | Конфигурация по умолчанию | Ошибки записываются в stdout. Для получения подробной информации см. errors. |
health | Конфигурация по умолчанию | Проверка состояния для CoreDNS. Она прослушивает {$POD_IP}:8080. Сохраните настройку по умолчанию. В противном случае проверка состояния CoreDNS завершится неудачей, и дополнение будет постоянно перезапускаться. Для получения подробной информации см. health. |
ready | Конфигурация по умолчанию | Определяет, готов ли сервер back‑end принимать трафик. Он прослушивает {$POD_IP}:8081. Если сервер back‑end не готов, CoreDNS приостановит разрешение DNS, пока сервер не станет готов. Для получения подробной информации см. ready. |
kubernetes | Конфигурация по умолчанию | Плагин CoreDNS Kubernetes, предоставляющий возможность разбора сервисов в кластере. Для получения подробной информации см. kubernetes. |
loadbalance | Конфигурация по умолчанию | Round-robin DNS балансировщик, который случайным образом переставляет порядок записей A, AAAA и MX в ответе. Для получения подробной информации см. loadbalance. |
prometheus | Конфигурация по умолчанию | API для получения метрик CoreDNS. По умолчанию он прослушивает {$POD_IP}:9153. Сохраните настройку по умолчанию. В противном случае Prometheus не сможет собирать метрики CoreDNS. Подробнее см. Prometheus. |
forward | Конфигурация по умолчанию | Перенаправляет любые запросы, которые не находятся в домене кластера Kubernetes, к предопределённым резольверам (/etc/resolv.conf). Подробнее см. forward. |
reload | Конфигурация по умолчанию | Автоматически перезагружает изменённые Corefiles. После изменения ConfigMap подождите две минуты, чтобы изменение вступило в силу. Подробнее см. reload. |
log | Расширенная конфигурация | Включает логирование CoreDNS. Подробнее см. log. Ниже приведён пример:
|
template | Расширенная конфигурация | Шаблон быстрого ответа, где AAAA указывает запрос IPv6. Если NXDOMAIN возвращается в ответе rcode, результат разрешения IPv6 не возвращается. Подробнее см. template. Следующий пример:
|
Параметр | Описание |
|---|---|
Multi-AZ Deployment |
|
Node Affinity |
|
Toleration | Использование как taint‑ов, так и toleration‑ов позволяет (но не требует) pod‑ам Deployment дополнения планироваться на узлах с соответствующими taint‑ами и обеспечивает контроль над политиками выселения pod‑ов, когда узлы‑хосты помечены taint‑ами. Дополнение применяет политики toleration по умолчанию для taint‑ов node.kubernetes.io/not-ready и node.kubernetes.io/unreachable на pod‑ах. Временное окно toleration составляет 60s. Подробности см. в Configuring Tolerance Policies. |
Компонент | Описание | Тип ресурса |
|---|---|---|
CoreDNS | DNS‑сервер для кластеров | Deployment |
Если вы устанавливаете дополнение CoreDNS, конфигурация просмотра Corefile недоступна. Эта конфигурация поддерживается только при редактировании или обновлении дополнения.
Once the function is enabled, the ConfigMap of CoreDNS in the kube-system namespace will be directly configured in the Corefile format. Any existing stub domain configurations and parameters such as parameterSyncStrategy, servers, and upstream_nameservers in the advanced settings will no longer be in effect. It is important to verify that the Corefile configuration is accurate.
For description of the Corefile format, see Configuration.
DNS policies can be configured for each pod. Kubernetes supports DNS policies Default, ClusterFirst, ClusterFirstWithHostNet, and None. For details, see DNS for Services and Pods. These policies are specified in the pod-specific dnsPolicy field.
Маршрутизация
Without stub domain configurations: Любой запрос, который не соответствует настроенному суффиксу домена кластера, например www.kubernetes.io, перенаправляется на восходящий DNS‑сервер, унаследованный от узла.
With stub domain configurations: Если stub domains и upstream DNS servers настроены, DNS‑запросы маршрутизируются согласно следующему потоку:
Figure 1 Маршрутизация
