Delen via


CoreDNS aanpassen voor Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) maakt gebruik van CoreDNS voor cluster-DNS-beheer en -resolutie met alle clusters 1.12.x en hoger. AKS is een beheerde service, dus u kunt de hoofdconfiguratie voor CoreDNS (een CoreFile) niet wijzigen. In plaats daarvan gebruikt u een Kubernetes ConfigMap om de standaardinstellingen te overschrijven. Gebruik de opdracht om de kubectl get configmaps --namespace=kube-system coredns --output yaml standaard AKS CoreDNS ConfigMaps te zien.

In dit artikel wordt beschreven hoe u ConfigMaps gebruikt voor basisopties voor CoreDNS-aanpassing in Azure Kubernetes Service (AKS).

Notitie

Voorheen gebruikte AKS kube-dns voor het DNS-beheer en de DNS-oplossing van het cluster, maar dat is nu afgeschaft. kube-dns verschillende aanpassingsopties aangeboden via een Kubernetes-configuratiekaart. CoreDNS is niet achterwaarts compatibel met kube-dns. U moet eventuele eerdere aanpassingen bijwerken om met CoreDNS te kunnen werken.

Vereiste voorwaarden

  • In dit artikel wordt ervan uitgegaan dat u een bestaand AKS-cluster hebt. Als u een AKS-cluster nodig hebt, kunt u er een maken met behulp van Azure CLI, Azure PowerShell of Azure Portal.
  • Controleer de versie van CoreDNS die u gebruikt. De configuratiewaarden kunnen veranderen tussen versies.

Ondersteuning voor invoegtoepassingen

Alle ingebouwde CoreDNS-invoegtoepassingen worden ondersteund. Er worden geen invoegtoepassingen van derden ondersteund.

Belangrijk

Wanneer u configuraties zoals de configuraties in dit artikel maakt, moeten de namen die u in de data sectie opgeeft, eindigen op .server of .override. Deze naamconventie wordt gedefinieerd in de standaard AKS CoreDNS ConfigMap, die u kunt weergeven met behulp van de kubectl get configmaps --namespace=kube-system coredns --output yaml opdracht.

DNS-naam herschrijven configureren

  1. Maak een bestand met de naam corednsms.yaml en plak deze in de volgende voorbeeldconfiguratie. Zorg ervoor dat u <domain to be rewritten> vervangt door uw eigen volledig gekwalificeerde domeinnaam (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
        }
    

    Belangrijk

    Als u omleidt naar een DNS-server, zoals het IP-adres van de CoreDNS-service, moet die DNS-server de herschreven domeinnaam kunnen omzetten.

  2. Maak de ConfigMap met behulp van de kubectl apply configmap opdracht en geef de naam van uw YAML-manifest op.

    kubectl apply -f corednsms.yaml
    
  3. Controleer of de aanpassingen zijn toegepast met behulp van de kubectl get configmaps opdracht.

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. Voer een rolling herstart uit om de ConfigMap opnieuw te laden en de Kubernetes Scheduler in te schakelen om CoreDNS opnieuw op te starten zonder uitvaltijd met behulp van de kubectl rollout restart opdracht.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Een doorstuurserver opgeven voor uw netwerkverkeer

  1. Maak een bestand met de naam corednsms.yaml en plak deze in de volgende voorbeeldconfiguratie. Zorg ervoor dat u de naam forward en <domain to be rewritten> vervangt door uw eigen waarden.

    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. Maak de ConfigMap met behulp van de kubectl apply configmap opdracht.

    kubectl apply -f corednsms.yaml
    
  3. Voer een rolling herstart uit om de ConfigMap opnieuw te laden en de Kubernetes Scheduler in te schakelen om CoreDNS opnieuw op te starten zonder uitvaltijd met behulp van de kubectl rollout restart opdracht.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Aangepaste domeinen gebruiken

Mogelijk wilt u aangepaste domeinen configureren die alleen intern kunnen worden opgelost. U kunt bijvoorbeeld het aangepaste domein puglife.local oplossen, wat geen geldig topleveldomein is. Zonder een aangepast domein ConfigMap kan het AKS-cluster het adres niet oplossen.

  1. Maak een nieuw bestand met de naam corednsms.yaml en plak deze in de volgende voorbeeldconfiguratie. Zorg ervoor dat u het aangepaste domein en IP-adres bijwerkt met uw eigen waarden.

    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. Maak de ConfigMap met behulp van de kubectl apply configmap opdracht.

    kubectl apply -f corednsms.yaml
    
  3. Voer een rolling herstart uit om de ConfigMap opnieuw te laden en de Kubernetes Scheduler in te schakelen om CoreDNS opnieuw op te starten zonder uitvaltijd met behulp van de kubectl rollout restart opdracht.

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Stub-domeinen configureren

  1. Maak een bestand met de naam corednsms.yaml en plak de volgende voorbeeldconfiguratie. Zorg ervoor dat u de aangepaste domeinen en IP-adressen bijwerkt met uw eigen waarden.

    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. Maak de ConfigMap met behulp van de kubectl apply configmap opdracht en geef deze op.

    kubectl apply -f corednsms.yaml
    
  3. Voer een rolling herstart uit om de ConfigMap opnieuw te laden en de Kubernetes Scheduler in te schakelen om CoreDNS opnieuw op te starten zonder uitvaltijd met behulp van de kubectl rollout restart opdracht.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Voeg aangepaste host-naar-IP toewijzingen toe

  1. Maak een bestand met de naam corednsms.yaml en plak de volgende voorbeeldconfiguratie. Zorg ervoor dat u de IP-adressen en hostnamen bijwerkt met uw eigen waarden.

    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. Maak de ConfigMap met behulp van de kubectl apply configmap opdracht.

    kubectl apply -f corednsms.yaml
    
  3. Voer een rolling herstart uit om de ConfigMap opnieuw te laden en de Kubernetes Scheduler in te schakelen om CoreDNS opnieuw op te starten zonder uitvaltijd met behulp van de kubectl rollout restart opdracht.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Volgende stappen