Přizpůsobení CoreDNS pro Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) používá CoreDNS ke správě a řešení DNS clusteru u všech clusterů verze 1.12.x a výše. AKS je spravovaná služba, takže nemůžete upravit hlavní konfiguraci coreDNS ( CoreFile). Místo toho použijete objekt ConfigMap Kubernetes k přepsání výchozího nastavení. Pokud chcete zobrazit výchozí ConfigMapy AKS CoreDNS, použijte tento příkaz kubectl get configmaps --namespace=kube-system coredns --output yaml.

V tomto článku se dozvíte, jak používat ConfigMaps pro základní možnosti přizpůsobení CoreDNS ve službě Azure Kubernetes Service (AKS).

Poznámka:

Dříve se AKS používalo kube-dns pro správu a řešení DNS clusteru, ale nyní je nedoporučováno. kube-dns nabízí různé možnosti přizpůsobení prostřednictvím mapy konfigurace Kubernetes. CoreDNS není zpětně kompatibilní s kube-dns. Abyste mohli pracovat s CoreDNS, musíte aktualizovat všechna předchozí přizpůsobení.

Požadavky

  • Tento článek předpokládá, že máte existující cluster AKS. Pokud potřebujete cluster AKS, můžete ho vytvořit pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal.
  • Ověřte verzi CoreDNS, kterou používáte. Hodnoty konfigurace se můžou mezi verzemi měnit.

Podpora modulů plug-in

Podporují se všechny integrované moduly plug-in CoreDNS. Nepodporují se žádné doplňky nebo moduly plug-in třetích stran.

Důležité

Při vytváření konfigurací, jako jsou ty v tomto článku, musí názvy, které zadáte v oddílu data, končit .server nebo .override. Tato konvence vytváření názvů je definována ve výchozím objektu ConfigMap AKS CoreDNS, který můžete zobrazit pomocí kubectl get configmaps --namespace=kube-system coredns --output yaml příkazu.

Konfigurujte přepis názvů DNS

  1. Vytvořte soubor s názvem corednsms.yaml a vložte ho do následující ukázkové konfigurace. Nezapomeňte nahradit <domain to be rewritten> vlastním plně kvalifikovaným názvem domény (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
        }
    

    Důležité

    Pokud přesměrujete na server DNS, například IP adresu služby CoreDNS, musí být tento server DNS schopný přeložit přepsaný název domény.

  2. Pomocí příkazu vytvořte objekt ConfigMap kubectl apply configmap a zadejte název manifestu YAML.

    kubectl apply -f corednsms.yaml
    
  3. Ověřte, že byla vlastní nastavení použita pomocí příkazu kubectl get configmaps.

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. Proveďte postupný restart, abyste znovu načetli ConfigMap a umožnili plánovači Kubernetes restartovat CoreDNS bez přerušení dostupnosti pomocí příkazu kubectl rollout restart.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Určení serveru pro předávání síťových přenosů

  1. Vytvořte soubor s názvem corednsms.yaml a vložte ho do následující ukázkové konfigurace. Nezapomeňte nahradit forward název a <domain to be rewritten> vlastními hodnotami.

    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. Pomocí příkazu vytvořte objekt ConfigMap kubectl apply configmap .

    kubectl apply -f corednsms.yaml
    
  3. Proveďte postupný restart, abyste znovu načetli ConfigMap a umožnili plánovači Kubernetes restartovat CoreDNS bez přerušení dostupnosti pomocí příkazu kubectl rollout restart.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Použití vlastních domén

Možná budete chtít nakonfigurovat vlastní domény, které lze vyřešit pouze interně. Můžete například chtít vyřešit vlastní doménu puglife.local, což není platná doména nejvyšší úrovně. Bez objektu ConfigMap vlastní domény nemůže AKS cluster tuto adresu vyřešit.

  1. Vytvořte nový soubor s názvem corednsms.yaml a vložte ho do následující ukázkové konfigurace. Nezapomeňte aktualizovat vlastní doménu a IP adresu vlastními hodnotami.

    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. Pomocí příkazu vytvořte objekt ConfigMap kubectl apply configmap .

    kubectl apply -f corednsms.yaml
    
  3. Proveďte postupný restart, abyste znovu načetli ConfigMap a umožnili plánovači Kubernetes restartovat CoreDNS bez přerušení dostupnosti pomocí příkazu kubectl rollout restart.

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Konfigurace zástupných domén

  1. Vytvořte soubor s názvem corednsms.yaml a vložte následující ukázkovou konfiguraci. Nezapomeňte aktualizovat vlastní domény a IP adresy vlastními hodnotami.

    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. Vytvořte objekt ConfigMap pomocí příkazu kubectl apply configmap a zadejte konkrétní parametry.

    kubectl apply -f corednsms.yaml
    
  3. Proveďte postupný restart, abyste znovu načetli ConfigMap a umožnili plánovači Kubernetes restartovat CoreDNS bez přerušení dostupnosti pomocí příkazu kubectl rollout restart.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Přidání vlastních mapování hostů na IP adresy

  1. Vytvořte soubor s názvem corednsms.yaml a vložte následující ukázkovou konfiguraci. Nezapomeňte aktualizovat IP adresy a názvy hostitelů vlastními hodnotami.

    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. Pomocí příkazu vytvořte objekt ConfigMap kubectl apply configmap .

    kubectl apply -f corednsms.yaml
    
  3. Proveďte postupný restart, abyste znovu načetli ConfigMap a umožnili plánovači Kubernetes restartovat CoreDNS bez přerušení dostupnosti pomocí příkazu kubectl rollout restart.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Další kroky