Поделиться через


Настройка CoreDNS для Службы Azure Kubernetes (AKS)

Служба Azure Kubernetes (AKS) использует CoreDNS для управления и разрешения DNS кластера со всеми кластерами 1.12.x и позднее. AKS — это управляемая служба, поэтому вы не можете изменить основную конфигурацию для CoreDNS (CoreFile). Вместо этого переопределите параметры по умолчанию с помощью объекта ConfigMap, который предоставляет служба Kubernetes. Чтобы просмотреть стандартные объекты ConfigMap AKS для CoreDNS, используйте команду kubectl get configmaps --namespace=kube-system coredns --output yaml.

В этой статье показано, как использовать ConfigMaps для основных параметров настройки CoreDNS в службе Azure Kubernetes (AKS).

Примечание.

Ранее AKS использовал kube-dns для управления и разрешения DNS кластера, но теперь это устарело. kube-dns предоставляет варианты настройки с помощью сопоставления конфигурации Kubernetes. CoreDNS не совместим с kube-dns. Для работы с CoreDNS необходимо обновить все предыдущие настройки.

Предпосылки

  • В этой статье предполагается, что у вас есть кластер AKS. Если вам нужен кластер AKS, можно создать его с помощью Azure CLI, Azure PowerShell или портал Azure.
  • Проверьте версию CoreDNS, которую вы используете. Значения конфигурации могут изменяться между версиями.

Поддержка подключаемого модуля

Поддерживаются все встроенные подключаемые модули CoreDNS. Не поддерживаются надстройки и подключаемые модули сторонних производителей.

Внимание

При создании конфигураций, таких как в этой статье, имена, указанные в data разделе, должны заканчиваться .server или .override. Это соглашение об именовании kubectl get configmaps --namespace=kube-system coredns --output yaml определяется в конфигурации ConfigMap по умолчанию AKS CoreDNS, которое можно просмотреть с помощью команды.

Настроить переписывание имен DNS

  1. Создайте файл с именем corednsms.yaml и вставьте его в следующую конфигурацию. Убедитесь, что заменили <domain to be rewritten> своим полным доменом (FQDN).

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: |
        <domain to be rewritten>.com:53 {
        log
        errors
        rewrite stop {
          name regex (.*)\.<domain to be rewritten>\.com {1}.default.svc.cluster.local
          answer name (.*)\.default\.svc\.cluster\.local {1}.<domain to be rewritten>.com
        }
        forward . /etc/resolv.conf # You can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten domain name
        }
    

    Внимание

    Если вы используете перенаправление на DNS-сервер, например на IP-адрес службы CoreDNS, этот DNS-сервер должен иметь возможность разрешать новое доменное имя.

  2. Создайте ConfigMap с помощью kubectl apply configmap команды и укажите имя манифеста YAML.

    kubectl apply -f corednsms.yaml
    
  3. Убедитесь, что настройки были применены с помощью kubectl get configmaps команды.

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. Выполните последовательный перезапуск, чтобы перезагрузить ConfigMap и включить планировщик Kubernetes для перезапуска CoreDNS без простоя с помощью kubectl rollout restart команды.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Укажите сервер пересылки для сетевого трафика

  1. Создайте файл с именем corednsms.yaml и вставьте его в следующую конфигурацию. Обязательно замените forward имя и <domain to be rewritten> собственные значения.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        <domain to be rewritten>.com:53 {
            forward foo.com 1.1.1.1
        }
    
  2. Создайте ConfigMap с помощью kubectl apply configmap команды.

    kubectl apply -f corednsms.yaml
    
  3. Выполните последовательный перезапуск, чтобы перезагрузить ConfigMap и включить планировщик Kubernetes для перезапуска CoreDNS без простоя с помощью kubectl rollout restart команды.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Использование личных доменов

Может потребоваться настроить пользовательские домены, которые могут быть разрешены только внутри системы. Например, может потребоваться разрешить пользовательский домен puglife.local, который не является допустимым доменом верхнего уровня. Без ConfigMap для этого личного домена кластер AKS не сможет разрешить такой адрес.

  1. Создайте файл с именем corednsms.yaml и вставьте его в следующую конфигурацию. Обязательно обновите личный домен и IP-адрес с собственными значениями.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      puglife.server: | # You can select any name here, but it must end with the .server file extension
        puglife.local:53 {
            errors
            cache 30
            forward . 192.11.0.1  # This is my test/dev DNS server
        }
    
  2. Создайте ConfigMap с помощью kubectl apply configmap команды.

    kubectl apply -f corednsms.yaml
    
  3. Выполните последовательный перезапуск, чтобы перезагрузить ConfigMap и включить планировщик Kubernetes для перезапуска CoreDNS без простоя с помощью kubectl rollout restart команды.

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Настроить псевдодомены

  1. Создайте файл с именем corednsms.yaml и вставьте следующую конфигурацию. Обязательно обновите пользовательские домены и IP-адреса с собственными значениями.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        abc.com:53 {
         errors
         cache 30
         forward . 1.2.3.4
        }
        my.cluster.local:53 {
            errors
            cache 30
            forward . 2.3.4.5
        }
    
    
  2. Создайте ConfigMap с помощью kubectl apply configmap команды и укажите.

    kubectl apply -f corednsms.yaml
    
  3. Выполните последовательный перезапуск, чтобы перезагрузить ConfigMap и включить планировщик Kubernetes для перезапуска CoreDNS без простоя с помощью kubectl rollout restart команды.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Добавьте настраиваемые сопоставления узла с IP-адресами

  1. Создайте файл с именем corednsms.yaml и вставьте следующую конфигурацию. Обязательно обновите IP-адреса и имена узлов с собственными значениями.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom # This is the name of the ConfigMap you can overwrite with your changes
      namespace: kube-system
    data:
        test.override: | # You can select any name here, but it must end with the .override file extension
              hosts { 
                  10.0.0.1 example1.org
                  10.0.0.2 example2.org
                  10.0.0.3 example3.org
                  fallthrough
              }
    
  2. Создайте ConfigMap с помощью kubectl apply configmap команды.

    kubectl apply -f corednsms.yaml
    
  3. Выполните последовательный перезапуск, чтобы перезагрузить ConfigMap и включить планировщик Kubernetes для перезапуска CoreDNS без простоя с помощью kubectl rollout restart команды.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Следующие шаги