Настройка CoreDNS для доступа к пользовательской DNS-зоне
CoreDNS — это DNS-сервер, который используется в кластере Managed Kubernetes для разрешения DNS-имен. По умолчанию CoreDNS не содержит информации о пользовательских DNS-зонах. Чтобы приложения в кластере могли разрешать DNS-имена из пользовательской DNS-зоны, расширьте конфигурацию CoreDNS с помощью дополнительного ресурса ConfigMap:
В примере ниже предполагается, что между кластером Managed Kubernetes и DNS-сервером, обслуживающим пользовательскую зону, настроена сетевая связность.
Перед началом работы
Заголовок раздела «Перед началом работы»Для прохождения руководства вам понадобится устройство, поддерживающее работу с командной строкой. Используйте личный компьютер или создайте промежуточную ВМ в той же сети, где будет расположен кластер Managed Kubernetes.
Создайте кластер Managed Kubernetes и группу узлов для него.
Создайте Egress NAT для подсети, в которой развернут кластер Managed Kubernetes.
1. Подготовьте окружение
Заголовок раздела «1. Подготовьте окружение»Подключитесь к терминалу на вашем компьютере или к промежуточной ВМ.
Установите и настройте утилиту MWS CLI:
Установите утилиту командной строки
kubectl.
2. Создайте ConfigMap для расширения конфигурации
Заголовок раздела «2. Создайте ConfigMap для расширения конфигурации»Сохраните манифест ресурса
ConfigMapв файлcustom-zone.yaml:yaml kind: ConfigMapapiVersion: v1metadata:name: coredns-extranamespace: kube-systemdata:Corefile: |example.com:53 {forward . <IP-адрес DNS-сервера>cache 30}Примените манифест в кластере:
bash kubectl apply -f custom-zone.yamlОжидаемый результат:
bash configmap/coredns-extra createdУбедитесь, что конфигурация CoreDNS обновлена:
bash kubectl logs \-n kube-system \-l k8s-app=kube-dns \--timestampsОжидаемый результат:
bash 2026-07-29T11:24:00.960316032Z [INFO] Reloading2026-07-29T11:24:01.062222277Z [INFO] plugin/reload: Running configuration SHA512 = ...2026-07-29T11:24:01.062239986Z [INFO] Reloading complete
3. Убедитесь, что DNS-зона доступна
Заголовок раздела «3. Убедитесь, что DNS-зона доступна»Запустите диагностический под:
bash kubectl run tmp-shell \--rm -it \--image nicolaka/netshootОжидаемый результат:
bash ...Welcome to Netshoot! (github.com/nicolaka/netshoot)Version: 0.14В терминале контейнера выполните команду:
bash nslookup host1.example.comОжидаемый результат:
bash Server: <IP-адрес CoreDNS>Address: <IP-адрес CoreDNS>:53Name: host1.example.comAddress: <IP-адрес из DNS-записи host1.example.com>
Удалите платные ресурсы
Заголовок раздела «Удалите платные ресурсы»Ресурсы, созданные в руководстве, тарифицируются. Если вы больше не планируете использовать их:
- Удалите промежуточную ВМ, если вы ее создавали.