Megosztás:


CoreDNS testreszabása az Azure Kubernetes Service-hez (AKS)

Az Azure Kubernetes Service (AKS) a CoreDNS-t használja a fürt DNS-kezelésére és feloldására az összes 1.12.x és újabb fürt esetében. Az AKS egy felügyelt szolgáltatás, így nem módosíthatja a CoreDNS (a CoreFile) fő konfigurációját. Ehelyett egy Kubernetes ConfigMap használatával bírálja felül az alapértelmezett beállításokat. Az alapértelmezett AKS CoreDNS konfigurációtérképek megtekintéséhez használja a kubectl get configmaps --namespace=kube-system coredns --output yaml parancsot.

Ez a cikk bemutatja, hogyan használható a ConfigMaps az Azure Kubernetes Service (AKS) alapszintű CoreDNS-testreszabási beállításaihoz.

Feljegyzés

Korábban az AKS a kube-dns-t használta a fürt DNS-kezeléséhez és feloldásához, de ez már elavult. kube-dns különböző testreszabási lehetőségeket kínált egy Kubernetes konfigurációs térképen keresztül. A CoreDNS nem visszafelé kompatibilis kube-dns-vel. A CoreDNS használatához frissítenie kell a korábbi testreszabásokat.

Előfeltételek

  • Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, létrehozhat egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával.
  • Ellenőrizze a futtatott CoreDNS-verziót. A konfigurációs értékek változhatnak a verziók között.

Bővítmény támogatása

Minden beépített CoreDNS beépülő modul támogatott. A bővítmények/harmadik felek beépülő moduljai nem támogatottak.

Fontos

Amikor a cikkben szereplő konfigurációkhoz hasonló konfigurációkat hoz létre, a data szakaszban megadott neveknek .server vagy .override végződésűnek kell lenniük. Ez az elnevezési konvenció az alapértelmezett AKS CoreDNS ConfigMap-ban van definiálva, amelyet a kubectl get configmaps --namespace=kube-system coredns --output yaml parancs használatával tekinthet meg.

DNS-név újraírásának konfigurálása

  1. Hozzon létre egy elnevezett corednsms.yaml fájlt, és illessze be a következő példakonfigurációba. Ügyeljen arra, hogy a <domain to be rewritten> helyett a saját teljes körű tartománynevét (FQDN) használja.

    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
        }
    

    Fontos

    Ha átirányít egy DNS-kiszolgálóra, például a CoreDNS szolgáltatás IP-címére, az adott DNS-kiszolgálónak képesnek kell lennie az újraírt tartománynév feloldására.

  2. Hozza létre a ConfigMap-ot a kubectl apply configmap paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f corednsms.yaml
    
  3. Ellenőrizze, hogy a parancs használatával alkalmazták-e a kubectl get configmaps testreszabásokat.

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. Gördülő újraindítást hajthat végre a ConfigMap újratöltéséhez, és engedélyezheti a Kubernetes Scheduler számára, hogy állásidő nélkül újraindítsa a CoreDNS-t a kubectl rollout restart parancs használatával.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Továbbítási kiszolgáló megadása a hálózati forgalomhoz

  1. Hozzon létre egy elnevezett corednsms.yaml fájlt, és illessze be a következő példakonfigurációba. Ügyeljen arra, hogy a forward nevet és a <domain to be rewritten> saját értékeire cserélje le.

    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. Hozza létre a ConfigMap-et a kubectl apply configmap parancs használatával.

    kubectl apply -f corednsms.yaml
    
  3. Gördülő újraindítást hajthat végre a ConfigMap újratöltéséhez, és engedélyezheti a Kubernetes Scheduler számára, hogy állásidő nélkül újraindítsa a CoreDNS-t a kubectl rollout restart parancs használatával.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Egyéni tartományok használata

Érdemes lehet olyan egyéni tartományokat konfigurálni, amelyek csak belsőleg oldhatók fel. Előfordulhat például, hogy fel szeretné oldani a puglife.local egyéni tartományt, amely nem érvényes legfelső szintű tartomány. Egyéni tartomány konfigurációtérképe nélkül az AKS-fürt nem tudja feloldani a címet.

  1. Hozzon létre egy új, elnevezett corednsms.yaml fájlt, és illessze be a következő példakonfigurációba. Mindenképpen frissítse az egyéni tartományt és AZ IP-címet a saját értékeivel.

    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. Hozza létre a ConfigMap-et a kubectl apply configmap parancs használatával.

    kubectl apply -f corednsms.yaml
    
  3. Gördülő újraindítást hajthat végre a ConfigMap újratöltéséhez, és engedélyezheti a Kubernetes Scheduler számára, hogy állásidő nélkül újraindítsa a CoreDNS-t a kubectl rollout restart parancs használatával.

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Csonktartományok konfigurálása

  1. Hozzon létre egy elnevezett corednsms.yaml fájlt, és illessze be a következő példakonfigurációt. Mindenképpen frissítse az egyéni tartományokat és IP-címeket a saját értékeivel.

    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. Hozza létre a ConfigMap-ot a kubectl apply configmap paranccsal, és adja meg.

    kubectl apply -f corednsms.yaml
    
  3. Gördülő újraindítást hajthat végre a ConfigMap újratöltéséhez, és engedélyezheti a Kubernetes Scheduler számára, hogy állásidő nélkül újraindítsa a CoreDNS-t a kubectl rollout restart parancs használatával.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Egyéni gazdagép–IP hozzárendelések hozzáadása

  1. Hozzon létre egy elnevezett corednsms.yaml fájlt, és illessze be a következő példakonfigurációt. Mindenképpen frissítse az IP-címeket és a gazdagépneveket a saját értékeivel.

    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. Hozza létre a ConfigMap-et a kubectl apply configmap parancs használatával.

    kubectl apply -f corednsms.yaml
    
  3. Gördülő újraindítást hajthat végre a ConfigMap újratöltéséhez, és engedélyezheti a Kubernetes Scheduler számára, hogy állásidő nélkül újraindítsa a CoreDNS-t a kubectl rollout restart parancs használatával.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Következő lépések