Compartir a través de


Personalización de CoreDNS para Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) usa CoreDNS para la administración y resolución de DNS del clúster con todos los clústeres 1.12.x y versiones posteriores. AKS es un servicio administrado, así que no puede modificar la configuración principal para CoreDNS (un archivo CoreFile). En su lugar, se usa una ConfigMapde Kubernetes para invalidar la configuración predeterminada. Para ver los archivos ConfigMap de CoreDNS predeterminados de AKS, use el comando kubectl get configmaps --namespace=kube-system coredns --output yaml.

En este artículo se muestra cómo usar ConfigMaps para las opciones básicas de personalización de CoreDNS en Azure Kubernetes Service (AKS).

Nota

Anteriormente, AKS utilizaba kube-dns para la administración y resolución de DNS del clúster, pero ahora es obsoleto. kube-dns Ofrece diferentes opciones de personalización diferentes a través de una asignación de configuración de Kubernetes. CoreDNS no es compatible con versiones anteriores kube-dns. Debe actualizar las personalizaciones anteriores para trabajar con CoreDNS.

Prerrequisitos

  • En este artículo se supone que tiene un clúster de AKS existente. Si necesita un clúster de AKS, puede crear uno mediante la CLI de Azure, Azure PowerShell o Azure Portal.
  • Compruebe la versión de CoreDNS que está ejecutando. Los valores de configuración pueden cambiar entre versiones.

Soporte con complementos

Se admiten todos los complementos CoreDNS integrados. No se admite ningún complemento o complemento de terceros.

Importante

Al crear configuraciones como las de este artículo, los nombres que especifique en la data sección deben terminar en .server o .override. Esta convención de nomenclatura se define en el ConfigMap predeterminado de CoreDNS de AKS, que se puede ver con el comando kubectl get configmaps --namespace=kube-system coredns --output yaml.

Configurar reescrituras de nombres DNS

  1. Cree un archivo denominado corednsms.yaml y pegue la siguiente configuración de ejemplo. Asegúrese de reemplazar <domain to be rewritten> por su propio nombre de dominio completo (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
        }
    

    Importante

    Si redirige a un servidor DNS, como la dirección IP del servicio CoreDNS, ese servidor DNS debe poder resolver el nombre de dominio reescrito.

  2. Cree ConfigMap con el comando kubectl apply configmap y especifique el nombre del manifiesto DE YAML.

    kubectl apply -f corednsms.yaml
    
  3. Compruebe que las personalizaciones se aplicaron mediante el kubectl get configmaps comando .

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. Realice un reinicio gradual para volver a cargar configMap y habilitar el programador de Kubernetes para reiniciar CoreDNS sin tiempo de inactividad mediante el kubectl rollout restart comando .

    kubectl --namespace kube-system rollout restart deployment coredns
    

Especificar un servidor de reenvío para el tráfico de red

  1. Cree un archivo denominado corednsms.yaml y pegue la siguiente configuración de ejemplo. Asegúrese de reemplazar el forward nombre y <domain to be rewritten> por sus propios valores.

    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. Cree el ConfigMap mediante el comando kubectl apply configmap.

    kubectl apply -f corednsms.yaml
    
  3. Realice un reinicio gradual para volver a cargar configMap y habilitar el programador de Kubernetes para reiniciar CoreDNS sin tiempo de inactividad mediante el kubectl rollout restart comando .

    kubectl --namespace kube-system rollout restart deployment coredns
    

Uso de dominios personalizados

Es posible que quiera configurar dominios personalizados que solo se puedan resolver internamente. Por ejemplo, puede que quiera resolver el dominio personalizado puglife.local, que no es un dominio de nivel superior válido. Sin un ConfigMap de dominio personalizado, el clúster de AKS no puede resolver la dirección.

  1. Cree un nuevo archivo denominado corednsms.yaml y pegue la siguiente configuración de ejemplo. Asegúrese de actualizar el dominio personalizado y la dirección IP con sus propios valores.

    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. Cree el ConfigMap mediante el comando kubectl apply configmap.

    kubectl apply -f corednsms.yaml
    
  3. Realice un reinicio gradual para volver a cargar configMap y habilitar el programador de Kubernetes para reiniciar CoreDNS sin tiempo de inactividad mediante el kubectl rollout restart comando .

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Configurar dominios stub

  1. Cree un archivo denominado corednsms.yaml y pegue la siguiente configuración de ejemplo. Asegúrese de actualizar los dominios personalizados y las direcciones IP con sus propios valores.

    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. Cree configMap con el kubectl apply configmap comando y especifique.

    kubectl apply -f corednsms.yaml
    
  3. Realice un reinicio gradual para volver a cargar configMap y habilitar el programador de Kubernetes para reiniciar CoreDNS sin tiempo de inactividad mediante el kubectl rollout restart comando .

    kubectl --namespace kube-system rollout restart deployment coredns
    

Agregar asignaciones personalizadas de host a IP

  1. Cree un archivo denominado corednsms.yaml y pegue la siguiente configuración de ejemplo. Asegúrese de actualizar las direcciones IP y los nombres de host con sus propios valores.

    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. Cree el ConfigMap mediante el comando kubectl apply configmap.

    kubectl apply -f corednsms.yaml
    
  3. Realice un reinicio gradual para volver a cargar configMap y habilitar el programador de Kubernetes para reiniciar CoreDNS sin tiempo de inactividad mediante el kubectl rollout restart comando .

    kubectl --namespace kube-system rollout restart deployment coredns
    

Pasos siguientes