Перейти к содержимому

Настройка CoreDNS для доступа к пользовательской DNS-зоне

CoreDNS — это DNS-сервер, который используется в кластере Managed Kubernetes для разрешения DNS-имен. По умолчанию CoreDNS не содержит информации о пользовательских DNS-зонах. Чтобы приложения в кластере могли разрешать DNS-имена из пользовательской DNS-зоны, расширьте конфигурацию CoreDNS с помощью дополнительного ресурса ConfigMap:

В примере ниже предполагается, что между кластером Managed Kubernetes и DNS-сервером, обслуживающим пользовательскую зону, настроена сетевая связность.

  1. Для прохождения руководства вам понадобится устройство, поддерживающее работу с командной строкой. Используйте личный компьютер или создайте промежуточную ВМ в той же сети, где будет расположен кластер Managed Kubernetes.

  2. Создайте кластер Managed Kubernetes и группу узлов для него.

  3. Создайте Egress NAT для подсети, в которой развернут кластер Managed Kubernetes.

  1. Подключитесь к терминалу на вашем компьютере или к промежуточной ВМ.

  2. Установите и настройте утилиту MWS CLI:

  3. Установите утилиту командной строки kubectl.

2. Создайте ConfigMap для расширения конфигурации

Заголовок раздела «2. Создайте ConfigMap для расширения конфигурации»
  1. Сохраните манифест ресурса ConfigMap в файл custom-zone.yaml:

    yaml
    kind: ConfigMap
    apiVersion: v1
    metadata:
    name: coredns-extra
    namespace: kube-system
    data:
    Corefile: |
    example.com:53 {
    forward . <IP-адрес DNS-сервера>
    cache 30
    }
  2. Примените манифест в кластере:

    bash
    kubectl apply -f custom-zone.yaml

    Ожидаемый результат:

    bash
    configmap/coredns-extra created
  3. Убедитесь, что конфигурация CoreDNS обновлена:

    bash
    kubectl logs \
    -n kube-system \
    -l k8s-app=kube-dns \
    --timestamps

    Ожидаемый результат:

    bash
    2026-07-29T11:24:00.960316032Z [INFO] Reloading
    2026-07-29T11:24:01.062222277Z [INFO] plugin/reload: Running configuration SHA512 = ...
    2026-07-29T11:24:01.062239986Z [INFO] Reloading complete
  1. Запустите диагностический под:

    bash
    kubectl run tmp-shell \
    --rm -it \
    --image nicolaka/netshoot

    Ожидаемый результат:

    bash
    ...
    Welcome to Netshoot! (github.com/nicolaka/netshoot)
    Version: 0.14
  2. В терминале контейнера выполните команду:

    bash
    nslookup host1.example.com

    Ожидаемый результат:

    bash
    Server: <IP-адрес CoreDNS>
    Address: <IP-адрес CoreDNS>:53
    Name: host1.example.com
    Address: <IP-адрес из DNS-записи host1.example.com>

Ресурсы, созданные в руководстве, тарифицируются. Если вы больше не планируете использовать их:

  1. Удалите промежуточную ВМ, если вы ее создавали.