Compartir a través de


Solución de problemas de resolución de DNS en AKS

En este artículo se describe cómo crear un flujo de trabajo de solución de problemas para corregir problemas de resolución del sistema de nombres de dominio (DNS) en Microsoft Azure Kubernetes Service (AKS).

Prerrequisitos

  • La herramienta de línea de comandos kubectl de Kubernetes

    Nota: Para instalar kubectl mediante la CLI de Azure, ejecute el comando az aks install-cli .

  • La herramienta de línea de comandos dig para la búsqueda de DNS

  • La herramienta de línea de comandos grep para la búsqueda de texto

  • Analizador de paquetes de red wireshark

Lista de verificación de solución de problemas

La solución de problemas de DNS en AKS suele ser un proceso complejo. Puede perderse fácilmente en los muchos pasos diferentes sin ver un camino claro hacia adelante. Para ayudar a que el proceso sea más sencillo y eficaz, use el método "científico" para organizar el trabajo:

  • Paso 1. Recopile los hechos.

  • Paso 2. Desarrolle una hipótesis.

  • Paso 3. Cree e implemente un plan de acción.

  • Paso 4. Observe los resultados y saque conclusiones.

  • Paso 5. Repita lo necesario.

Paso 1 de solución de problemas: Recopilar los hechos

Para comprender mejor el contexto del problema, recopile hechos sobre el problema de DNS específico. Mediante el uso de las siguientes preguntas de línea base como punto de partida, puede describir la naturaleza del problema, reconocer los síntomas e identificar el ámbito del problema.

Pregunta Posibles respuestas
¿Dónde se produce un error en la resolución DNS?
  • Vaina
  • Nodo
  • Pods y nodos
¿Qué tipo de error de DNS recibes?
  • Tiempo de espera
  • Ningún host de este tipo
  • Otro error DNS
¿Con qué frecuencia se producen los errores dns?
  • Siempre
  • Intermitentemente
  • En un patrón específico
¿Qué registros se ven afectados?
  • Un dominio específico
  • Cualquier dominio
¿Existen configuraciones DE DNS personalizadas?
  • Servidor DNS personalizado configurado en la red virtual
  • Configuración personalizada de DNS en CoreDNS
¿Qué tipo de problemas de rendimiento afectan a los nodos?
  • Unidad Central de Procesamiento (CPU)
  • Memoria
  • Limitación de E/S
¿Qué tipo de problemas de rendimiento afectan a los pods de CoreDNS?
  • Unidad Central de Procesamiento (CPU)
  • Memoria
  • Limitación de E/S
¿Qué causa la latencia de DNS? Consultas DNS que tardan demasiado tiempo en recibir una respuesta (más de cinco segundos)

Para obtener mejores respuestas a estas preguntas, siga este proceso de tres partes.

Parte 1: Generar pruebas en diferentes niveles que reproducen el problema

El proceso de resolución del DNS para los pods en AKS incluye varias capas. Revise estas capas para aislar el problema. Las capas siguientes son típicas:

  • Pods de CoreDNS
  • Servicio CoreDNS
  • Nodos
  • DNS de red virtual

Para iniciar el proceso, ejecute pruebas con un pod de prueba contra cada capa.

Prueba de la resolución DNS en el nivel de pod de CoreDNS
  1. Implemente un pod de prueba para ejecutar consultas de prueba de DNS mediante la ejecución del siguiente comando:

    cat <<EOF | kubectl apply --filename -
    apiVersion: v1
    kind: Pod
    metadata:
      name: aks-test
    spec:
      containers:
      - name: aks-test
        image: debian:stable
        command: ["/bin/sh"]
        args: ["-c", "apt-get update && apt-get install -y dnsutils && while true; do sleep 1000; done"]
    EOF
    
  2. Recupere las direcciones IP de los pods de CoreDNS mediante la ejecución del siguiente comando kubectl get :

    kubectl get pod --namespace kube-system --selector k8s-app=kube-dns --output wide
    
  3. Conéctese al pod de prueba mediante el kubectl exec -it aks-test -- bash comando y pruebe la resolución DNS en cada dirección IP del pod de CoreDNS mediante la ejecución de los siguientes comandos:

    # Placeholder values
    FQDN="<fully-qualified-domain-name>"  # For example, "db.contoso.com"
    DNS_SERVER="<coredns-pod-ip-address>"
    
    # Test loop
    for i in $(seq 1 1 10)
    do
        echo "host= $(dig +short ${FQDN} @${DNS_SERVER})"
        sleep 1
    done
    

Para obtener más información sobre cómo solucionar problemas de resolución de DNS desde el nivel de pod, consulte Solución de errores de resolución de DNS desde el pod.

Prueba de la resolución DNS en el nivel de servicio CoreDNS
  1. Recupere la dirección IP del servicio CoreDNS ejecutando el siguiente kubectl get comando:

    kubectl get service kube-dns --namespace kube-system
    
  2. En el pod de prueba, ejecute los siguientes comandos en la dirección IP del servicio CoreDNS:

    # Placeholder values
    FQDN="<fully-qualified-domain-name>"  # For example, "db.contoso.com"
    DNS_SERVER="<kubedns-service-ip-address>"
    
    # Test loop
    for i in $(seq 1 1 10)
    do
        echo "host= $(dig +short ${FQDN} @${DNS_SERVER})"
        sleep 1
    done
    
Prueba de la resolución DNS en el nivel de nodo
  1. Conéctese al nodo.

  2. Ejecute el siguiente grep comando para recuperar la lista de servidores DNS ascendentes configurados:

    grep ^nameserver /etc/resolv.conf
    
  3. Ejecute los siguientes comandos de texto en cada DNS configurado en el nodo:

    # Placeholder values
    FQDN="<fully-qualified-domain-name>"  # For example, "db.contoso.com"
    DNS_SERVER="<dns-server-in-node-configuration>"
    
    # Test loop
    for i in $(seq 1 1 10)
    do
        echo "host= $(dig +short ${FQDN} @${DNS_SERVER})"
        sleep 1
    done
    
Prueba la resolución DNS en el nivel DNS de la red virtual

Examine la configuración del servidor DNS de la red virtual y determine si los servidores pueden resolver el registro en cuestión.

Parte 2: Revisión del estado y el rendimiento de los pods y nodos de CoreDNS

Revisión del estado y el rendimiento de los pods de CoreDNS

Puede usar kubectl comandos para comprobar el estado y el rendimiento de los pods de CoreDNS. Para ello, siga estos pasos:

  1. Compruebe que los pods de CoreDNS se están ejecutando:

    kubectl get pods -l k8s-app=kube-dns -n kube-system
    
  2. Compruebe si los pods de CoreDNS están sobreutilizados:

    kubectl top pods -n kube-system -l k8s-app=kube-dns
    
    NAME                      CPU(cores)   MEMORY(bytes)
    coredns-dc97c5f55-424f7   3m           23Mi
    coredns-dc97c5f55-wbh4q   3m           25Mi
    
  3. Obtenga los nodos que hospedan los pods de CoreDNS:

    kubectl get pods -n kube-system -l k8s-app=kube-dns -o jsonpath='{.items[*].spec.nodeName}'
    
  4. Compruebe que los nodos no se han sobreutilizado:

    kubectl top nodes
    
  5. Compruebe los registros de los pods de CoreDNS:

    kubectl logs -l k8s-app=kube-dns -n kube-system
    

Nota:

Para obtener más información de depuración, habilite los registros detallados en CoreDNS. Para ello, consulte Solución de problemas de personalización de CoreDNS en AKS.

Revisar el estado y el rendimiento de los nodos

Puede que primero note problemas de rendimiento en la resolución de DNS como errores intermitentes, tales como tiempos de espera. Las principales causas de este problema son el agotamiento de recursos y la limitación de E/S dentro de los nodos que hospedan los pods de CoreDNS o el pod cliente.

Para comprobar si se está produciendo un agotamiento de recursos o una limitación de E/S, ejecute el siguiente comando kubectl describe junto con el grep comando en los nodos. Esta serie de comandos le permite revisar el recuento de solicitudes y compararlo con el límite de cada recurso. Si el porcentaje de límite es superior al 100 por ciento para un recurso, ese recurso se sobrecommite.

kubectl describe node | grep -A5 '^Name:\|^Allocated resources:' | grep -v '.kubernetes.io\|^Roles:\|Labels:'

En el fragmento de código siguiente se muestra la salida de ejemplo de este comando:

Name:               aks-nodepool1-17046773-vmss00000m
--
Allocated resources:
  (Total limits might be more than 100 percent.)
  Resource           Requests           Limits
  --------           --------           ------
  cpu                250m (13 percent)  40m (2 percent)
  memory             420Mi (9 percent)  1762Mi (41 percent)
--
Name:               aks-nodepool1-17046773-vmss00000n
--
Allocated resources:
  (Total limits might be more than 100 percent.)
  Resource           Requests            Limits
  --------           --------            ------
  cpu                612m (32 percent)   8532m (449 percent)
  memory             804Mi (18 percent)  6044Mi (140 percent)
--
Name:               aks-nodepool1-17046773-vmss00000o
--
Allocated resources:
  (Total limits might be more than 100 percent.)
  Resource           Requests           Limits
  --------           --------           ------
  cpu                250m (13 percent)  40m (2 percent)
  memory             420Mi (9 percent)  1762Mi (41 percent)
--
Name:               aks-ubuntu-16984727-vmss000008
--
Allocated resources:
  (Total limits might be more than 100 percent.)
  Resource           Requests            Limits
  --------           --------            ------
  cpu                250m (13 percent)   40m (2 percent)
  memory             420Mi (19 percent)  1762Mi (82 percent)

Para obtener una mejor imagen del uso de recursos en el nivel de pod y nodo, también puede usar Container Insights y otras herramientas nativas de nube en Azure. Para más información, consulte Supervisión de clústeres de Kubernetes mediante servicios de Azure y herramientas nativas en la nube.

Parte 3: Análisis del tráfico DNS y revisión del rendimiento de la resolución de DNS

El análisis del tráfico DNS puede ayudarle a comprender cómo controla el clúster de AKS las consultas DNS. Lo ideal es que reproduzcas el problema en un pod de prueba mientras capturas el tráfico de este pod de prueba y de cada uno de los pods CoreDNS.

Hay dos maneras principales de analizar el tráfico DNS:

  • Uso de herramientas de análisis de DNS en tiempo real, como Inspektor Gadget, para analizar el tráfico DNS en tiempo real.
  • Con herramientas de captura de tráfico, como Retina Capture y Dumpy, para recopilar el tráfico DNS y analizarlo con una herramienta de analizador de paquetes de red, como Wireshark.

Ambos enfoques tienen como objetivo comprender el estado y el rendimiento de las respuestas DNS mediante códigos de respuesta DNS, tiempos de respuesta y otras métricas. Elija la que mejor se adapte a sus necesidades.

Análisis del tráfico DNS en tiempo real

Puede usar Inspektor Gadget para analizar el tráfico DNS en tiempo real. Para instalar Inspektor Gadget en el clúster, consulte Instalación de Inspektor Gadget en un clúster de AKS.

Para realizar un seguimiento del tráfico DNS en todos los espacios de nombres, use el siguiente comando:

# Get the version of Gadget
GADGET_VERSION=$(kubectl gadget version | grep Server | awk '{print $3}')
# Run the trace_dns gadget
kubectl gadget run trace_dns:$GADGET_VERSION --all-namespaces --fields "src,dst,name,qr,qtype,id,rcode,latency_ns"

Donde --fields es una lista separada por comas de campos que se van a mostrar. En la lista siguiente se describen los campos que se usan en el comando :

  • src: origen de la solicitud con información de Kubernetes (<kind>/<namespace>/<name>:<port>).
  • dst: el destino de la solicitud con información de Kubernetes (<kind>/<namespace>/<name>:<port>).
  • name: el nombre de la solicitud DNS.
  • qr: marca de consulta/respuesta.
  • qtype: tipo de la solicitud DNS.
  • id: el identificador de la solicitud DNS, que se usa para buscar coincidencias con la solicitud y la respuesta.
  • rcode: el código de respuesta de la solicitud DNS.
  • latency_ns: la latencia de la solicitud DNS.

La salida del comando es similar a la siguiente:

SRC                                  DST                                  NAME                        QR QTYPE          ID             RCODE           LATENCY_NS
p/default/aks-test:33141             p/kube-system/coredns-57d886c994-r2… db.contoso.com.             Q  A              c215                                  0ns
p/kube-system/coredns-57d886c994-r2… 168.63.129.16:53                     db.contoso.com.             Q  A              323c                                  0ns
168.63.129.16:53                     p/kube-system/coredns-57d886c994-r2… db.contoso.com.             R  A              323c           NameErr…           13.64ms
p/kube-system/coredns-57d886c994-r2… p/default/aks-test:33141             db.contoso.com.             R  A              c215           NameErr…               0ns
p/default/aks-test:56921             p/kube-system/coredns-57d886c994-r2… db.contoso.com.             Q  A              6574                                  0ns
p/kube-system/coredns-57d886c994-r2… p/default/aks-test:56921             db.contoso.com.             R  A              6574           NameErr…               0ns

Puede usar el ID campo para identificar si una consulta tiene una respuesta. El RCODE campo muestra el código de respuesta de la solicitud DNS. El LATENCY_NS campo muestra la latencia de la solicitud DNS en nanosegundos. Estos campos pueden ayudarle a comprender el estado y el rendimiento de las respuestas DNS. Para más información sobre el análisis de DNS en tiempo real, consulte Solución de errores de DNS en un clúster de AKS en tiempo real.

Captura del tráfico DNS

En esta sección se muestra cómo usar Dumpy para recopilar capturas de tráfico DNS de cada pod de CoreDNS y un pod DNS de cliente (en este caso, el aks-test pod).

Para recopilar las capturas del pod de cliente de prueba, ejecute el siguiente comando:

kubectl dumpy capture pod aks-test -f "-i any port 53" --name dns-cap1-aks-test

Para recopilar capturas para los pods de CoreDNS, ejecute el siguiente comando Dumpy:

kubectl dumpy capture deploy coredns \
    -n kube-system \
    -f "-i any port 53" \
    --name dns-cap1-coredns

Idealmente, debe ejecutar capturas mientras el problema se reproduce. Este requisito significa que las diferentes capturas se pueden ejecutar durante diferentes cantidades de tiempo, en función de la frecuencia con la que se pueda reproducir el problema. Para recopilar las capturas, ejecute los siguientes comandos:

mkdir dns-captures
kubectl dumpy export dns-cap1-aks-test ./dns-captures
kubectl dumpy export dns-cap1-coredns ./dns-captures -n kube-system

Para eliminar los pods Dumpy, ejecute el siguiente comando Dumpy:

kubectl dumpy delete dns-cap1-coredns -n kube-system
kubectl dumpy delete dns-cap1-aks-test

Para combinar todas las capturas de pod de CoreDNS, use la herramienta de línea de comandos mergecap para combinar archivos de captura. La mergecap herramienta se incluye en la herramienta analizador de paquetes de red wireshark. Ejecute el comando mergecap siguiente:

mergecap -w coredns-cap1.pcap dns-cap1-coredns-<coredns-pod-name-1>.pcap dns-cap1-coredns-<coredns-pod-name-2>.pcap [...]
Análisis de paquetes DNS para un pod coreDNS individual

Después de generar y combinar los archivos de captura de tráfico, puede realizar un análisis de paquetes DNS de los archivos de captura en Wireshark. Siga estos pasos para ver el análisis de paquetes para el tráfico de un pod CoreDNS individual:

  1. Seleccione Inicio, escriba Wireshark y, a continuación, seleccione Wireshark en los resultados de la búsqueda.

  2. En la ventana Wireshark , seleccione el menú Archivo y, a continuación, seleccione Abrir.

  3. Vaya a la carpeta que contiene los archivos de captura, seleccione dns-cap1-db-check-db-check-pod-name.pcap<> (el archivo de captura del lado cliente para un pod coreDNS individual) y, a continuación, seleccione el botón Abrir.

  4. Seleccione el menú Estadísticas y, a continuación, seleccione DNS. Aparece el cuadro de diálogo Wireshark - DNS y muestra un análisis del tráfico DNS. El contenido del cuadro de diálogo se muestra en la tabla siguiente.

    Tema o elemento Contar Promedio Min Val Valor máximo Tiempo (ms) Porcentaje Velocidad de ráfaga Comienzo de ráfaga
    ▾ Total de paquetes 1066 0.0017 100 % 0.1200 0,000
     ▾ rcode 1066 0.0017 100,00% 0.1200 0,000
        Error del servidor 17 0.0000 1,59% 0.0100 99.332
       Ningún nombre de este tipo 353 0.0006 33.11% 0.0400 0,000
       No hay ningún error 696 0.0011 65.29% 0.0800 0,000
     ▾ códigos de operación 1066 0.0017 100,00% 0.1200 0,000
       Consulta estándar 1066 0.0017 100,00% 0.1200 0,000
     ▾ Consulta/respuesta 1066 0.0017 100,00% 0.1200 0,000
        Respuesta 531 0.0009 49.81% 0.0600 0,000
        Consulta 535 0.0009 50.19% 0.0600 0,000
     ▾ Tipo de consulta 1066 0.0017 100,00% 0.1200 0,000
       AAAA 167 0.0003 15.67% 0.0200 0,000
       Un 899 0.0015 84.33% 0.1000 0,000
     ▾ Clase 1066 0.0017 100,00% 0.1200 0,000
       EN 1066 0.0017 100,00% 0.1200 0,000
    ▾ Estadísticas de servicio 0 0.0000 100 % - -
       tiempo de solicitud-respuesta (msec) 531 184.42 0.067000 6308.503906 0.0009 0.0600 0,000
      No. de respuestas no solicitadas 0 0.0000 - -
      No. de retransmisiones 0 0.0000 - -
    ▾ Estadísticas de respuesta 0 0.0000 100 % - -
      No. de preguntas 1062 1.00 1 1 0.0017 0,1200 0,000
      No. de autoridades 1062 0.82 0 1 0.0017 0,1200 0,000
      No. de respuestas 1062 0.15 0 1 0.0017 0.1200 0,000
      No. de elementos adicionales 1062 0.00 0 0 0.0017 0.1200 0,000
    ▾ Estadísticas de consulta 0 0.0000 100 % - -
      Qname Len 535 32,99 14 66 0.0009 0.0600 0,000
     ▾ Estadísticas de etiquetas 0 0.0000 - -
       4º nivel o más 365 0.0006 0.0400 0,000
       Tercer nivel 170 0.0003 0.0200 0,000
       2º nivel 0 0.0000 - -
       Primer nivel 0 0.0000 - -
     Tamaño de carga 1066 92.87 32 194 0.0017 100 % 0.1200 0,000

El cuadro de diálogo Análisis de DNS de Wireshark muestra un total de 1066 paquetes. De estos paquetes, el 17 (1,59 por ciento) provocó un error en el servidor. Además, el tiempo de respuesta máximo era de 6308 milisegundos (6,3 segundos) y no se recibió ninguna respuesta durante el 0,38 por ciento de las consultas. (Este total se calculó restando el 49,81 por ciento de los paquetes que contenían respuestas del 50,19 por ciento de los paquetes que contenían consultas).

Si escribe (dns.flags.response == 0) && ! dns.response_in como filtro de visualización en Wireshark, este filtro muestra las consultas DNS que no recibieron una respuesta, como se muestra en la tabla siguiente.

No. Tiempo Fuente Destino Protocolo Largura Información
225 2024-04-01 16:50:40.000520 10.0.0.21 172.16.0.10 DNS (Sistema de Nombres de Dominio) 80 Consulta estándar 0x2c67 AAAA db.contoso.com
426 2024-04-01 16:52:47.419907 10.0.0.21 172.16.0.10 DNS (Sistema de Nombres de Dominio) 132 Consulta estándar 0x8038 A db.contoso.com.iosffyoulcwehgo1g3egb3m4oc.jx.internal.cloudapp.net
693 2024-04-01 16:55:23.105558 10.0.0.21 172.16.0.10 DNS (Sistema de Nombres de Dominio) 132 Consulta estándar 0xbcb0 A db.contoso.com.iosffyoulcwehgo1g3egb3m4oc.jx.internal.cloudapp.net
768 2024-04-01 16:56:06.512464 10.0.0.21 172.16.0.10 DNS (Sistema de Nombres de Dominio) 80 Consulta estándar 0xe330 hacia db.contoso.com

Además, la barra de estado Wireshark muestra el texto Paquetes: 1066 - Mostrado: 4 (0,4%). Esta información significa que cuatro de los 1066 paquetes, o el 0,4 por ciento, eran consultas DNS que nunca recibieron una respuesta. Este porcentaje coincide esencialmente con el total del 0,38 por ciento que calculó anteriormente.

Si cambia el filtro de presentación a dns.time >= 5, el filtro muestra los paquetes de respuesta de consulta que tardaron cinco segundos o más en recibirse, como se muestra en la tabla actualizada.

No. Tiempo Fuente Destino Protocolo Largura Información SourcePort RR adicionales Tiempo de respuesta DNS
213 2024-04-01 16:50:32.644592 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 132 Falló la consulta estándar del servidor: 0x9312 A db.contoso.com.iosffyoulcwehgo1g3egb3m4oc.jx.internal.cloudapp.net 53 0 6.229941
320 2024-04-01 16:51:55.053896 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 80 Error de consulta estándar 0xe5ce Error del servidor A db.contoso.com 53 0 6.065555
328 2024-04-01 16:51:55.113619 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 132 Fallo de consulta estándar 0x6681: error del servidor A db.contoso.com.iosffyoulcwehgo1g3egb3m4oc.jx.internal.cloudapp.net 53 0 6.029641
335 2024-04-01 16:52:02.553811 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 80 Error de consulta estándar 0x6cf6 fallo del servidor en db.contoso.com 53 0 6,500504
541 2024-04-01 16:53:53.423838 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 80 Error de consulta estándar 0x07b3 Fallo del servidor AAAA db.contoso.com 53 0 6.022195
553 2024-04-01 16:54:05.165234 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 132 Fallo de servidor en consulta estándar 0x1ea0 A db.contoso.com.iosffyoulcwehgo1g3egb3m4oc.jx.internal.cloudapp.net 53 0 6.007022
774 2024-04-01 16:56:17.553531 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 80 Error de consulta estándar 0xa20f fallo del servidor AAAA db.contoso.com 53 0 6.014926
891 2024-04-01 16:56:44.442334 172.16.0.10 10.0.0.21 DNS (Sistema de Nombres de Dominio) 132 Error de consulta estándar 0xa279 Error del servidor A db.contoso.com.iosffyoulcwehgo1g3egb3m4oc.jx.internal.cloudapp.net 53 0 6.044552

Después de cambiar el filtro de presentación, la barra de estado se actualiza para mostrar el texto Paquetes: 1066 - Mostrado: 8 (0,8%). Por lo tanto, ocho de los 1066 paquetes, o el 0,8 por ciento, eran respuestas DNS que tardaron cinco segundos o más en recibirse. Sin embargo, en la mayoría de los clientes, se espera que el valor predeterminado de tiempo de espera de DNS sea de cinco segundos. Esta expectativa significa que, aunque los pods de CoreDNS procesaron y entregaron las ocho respuestas, el cliente ya había finalizado la sesión al emitir un mensaje de error de "tiempo de espera agotado". La columna Información de los resultados filtrados muestra que los ocho paquetes provocaron un error en el servidor.

Análisis de paquetes DNS para todos los pods de CoreDNS

En Wireshark, abra el archivo de captura de los pods de CoreDNS que ha combinado anteriormente (coredns-cap1.pcap) y, a continuación, abra el análisis de DNS, como se describe en la sección anterior. Aparece un cuadro de diálogo Wireshark que muestra la tabla siguiente.

Tema o elemento Contar Promedio Min Val Valor máximo Tiempo (ms) Porcentaje Velocidad de ráfaga Comienzo de ráfaga
Total de paquetes 4540233 7.3387 100 % 84.7800 592.950
 ▾ rcode 4540233 7.3387 100,00% 84.7800 592.950
    Error del servidor 121781 0.1968 2.68% 8.4600 599.143
   Ningún nombre de este tipo 574658 0.9289 12,66 % 10,9800 592.950
   No hay ningún error 3843794 6,2130 84.66% 73.2500 592.950
 ▾ códigos de operación 4540233 7.3387 100,00% 84.7800 592.950
   Consulta estándar 4540233 7.3387 100,00% 84.7800 592.950
 ▾ Consulta/respuesta 4540233 7.3387 100,00% 84.7800 592.950
    Respuesta 2135116 3.4512 47.03% 39.0400 581.680
    Consulta 2405117 3,8876 52,97% 49.1400 592.950
 ▾ Tipo de consulta 4540233 7.3387 100,00% 84.7800 592.950
   SRV 3647 0.0059 0,08% 0.1800 586.638
   RPP 554630 0.8965 12.22% 11.5400 592.950
   NS 15918 0.0257 0,35 % 0.7200 308.225
   México 393016 0.6353 8.66% 7.9700 426.930
   AAAA 384032 0.6207 8,46 % 8.4700 438.155
   Un 3188990 5.1546 70.24% 57,9600 592.950
 ▾ Clase 4540233 7.3387 100,00% 84.7800 592.950
   EN 4540233 7.3387 100,00% 84.7800 592.950
▾ Estadísticas de servicio 0 0.0000 100 % - -
   tiempo de solicitud-respuesta (msec) 2109677 277.18 0.020000 12000.532227 3.4100 38.0100 581.680
  No. de respuestas no solicitadas 25402 0.0411 5,1400 587.832
  No. de retransmisiones 37 0.0001 0.0300 275.702
▾ Estadísticas de respuesta 0 0.0000 100 % - -
  No. de preguntas 4244830 1.00 1 1 6.8612 77.0500 581.680
  No. de autoridades 4244830 0.39 0 11 6.8612 77.0500 581.680
  No. de respuestas 4244830 1.60 0 22 6,8612 77.0500 581.680
  No. de elementos adicionales 4244830 0,29 0 26 6.8612 77.0500 581.680
▾ Estadísticas de consulta 0 0.0000 100 % - -
  Qname Len 2405117 20.42 2 113 3,8876 49.1400 592.950
 ▾ Estadísticas de etiquetas 0 0.0000 - -
   4º nivel o más 836034 1.3513 16.1900 592.950
   Tercer nivel 1159513 1.8742 23.8900 592.950
   2º nivel 374182 0.6048 8.7800 592.955
   Primer nivel 35388 0.0572 0.9200 294.492
 Tamaño de carga 4540233 89.87 17 1128 7.3387 100 % 84.7800 592.950

El cuadro de diálogo indica que había un total combinado de aproximadamente 4,5 millones (4,540,233) paquetes, de los cuales el 2,68 % causó un error en el servidor. La diferencia en los porcentajes de paquetes de consulta y respuesta muestra que el 5,94 por ciento de las consultas (52,97 por ciento menos el 47,03 por ciento) no recibió una respuesta. El tiempo máximo de respuesta fue de 12 segundos (12 000,532227 milisegundos).

Si aplica el filtro de visualización para las respuestas de consulta que tardaron cinco segundos o más (dns.time >= 5), la mayoría de los paquetes de los resultados del filtro indicarán que se produjo un error en el servidor. Esto probablemente se debe a un error de "agotamiento del tiempo de espera" del cliente.

La tabla siguiente es un resumen de los resultados de captura.

Capturar criterios de revisión No
La diferencia entre las consultas DNS y las respuestas supera el dos por ciento.
La latencia de DNS es más de un segundo

Paso 2 de solución de problemas: Desarrollo de una hipótesis

En esta sección se clasifican los tipos de problemas comunes para ayudarle a reducir los posibles problemas e identificar los componentes que podrían requerir ajustes. Este enfoque establece la base para crear un plan de acción dirigido para mitigar y resolver estos problemas de forma eficaz.

Códigos de respuesta DNS comunes

En la tabla siguiente se resumen los códigos de retorno DNS más comunes.

Código de retorno DNS Mensaje de retorno de DNS Descripción
RCODE:0 NOERROR La consulta DNS finalizó correctamente.
RCODE:1 FORMERR Existe un error de formato de consulta DNS.
RCODE:2 SERVFAIL El servidor no completó la solicitud DNS.
RCODE:3 NXDOMAIN El nombre de dominio no existe.
RCODE:5 REFUSED El servidor se negó a responder a la consulta.
RCODE:8 NOTAUTH El servidor no es autoritativo para la zona.

Tipos de problemas generales

En la tabla siguiente se enumeran las categorías de tipo de problema que le ayudan a desglosar los síntomas del problema.

Tipo de problema Descripción
Rendimiento Los problemas de rendimiento de resolución de DNS pueden provocar errores intermitentes, como errores por "tiempo de espera" desde la perspectiva de un cliente. Estos problemas pueden producirse porque los nodos experimentan agotamiento de recursos o limitación de E/S. Además, las restricciones en los recursos de proceso de los pods de CoreDNS pueden provocar latencia de resolución. Si la latencia de CoreDNS es alta o aumenta con el tiempo, esto podría indicar un problema de carga. Si las instancias de CoreDNS están sobrecargadas, es posible que experimente problemas y retrasos en la resolución de nombres DNS, o puede que vea problemas en cargas de trabajo y servicios internos de Kubernetes.
Configuración Los problemas de configuración pueden provocar una resolución DNS incorrecta. En este caso, es posible que experimente NXDOMAIN errores de tiempo de espera o "agotado". Las configuraciones incorrectas pueden producirse en CoreDNS, nodos, Kubernetes, enrutamiento, DNS de red virtual, zonas DNS privadas, firewalls, servidores proxy, etc.
Conectividad de red Los problemas de conectividad de red pueden afectar a la conectividad de pod a pod (tráfico este-oeste) o la conectividad de pod y nodo a recursos externos (tráfico norte-sur). Este escenario puede provocar errores de "tiempo agotado". Los problemas de conectividad pueden producirse si los puntos de conexión de servicio coreDNS no están actualizados (por ejemplo, debido a problemas de kube-proxy, problemas de enrutamiento, pérdida de paquetes, etc.). La dependencia de recursos externos combinada con problemas de conectividad (por ejemplo, dependencia en servidores DNS personalizados o servidores DNS externos) también puede contribuir al problema.

Entradas necesarias

Antes de formular una hipótesis de causas probables del problema, resuma los resultados de los pasos anteriores del flujo de trabajo de solución de problemas.

Puede recopilar los resultados mediante las tablas siguientes.

Resultados de la plantilla de cuestionario de línea base
Pregunta Posibles respuestas
¿Dónde se produce un error en la resolución DNS? ☐ Cápsula
☐ Nodo
☐ Tanto pod como nodo
¿Qué tipo de error DNS obtienes? ☐ Se agota el tiempo de espera
NXDOMAIN
☐ Otro error DNS
¿Con qué frecuencia se producen los errores dns? ☐ Siempre
☐ Intermitentemente
☐ En un patrón específico
¿Qué registros se ven afectados? ☐ Un dominio específico
☐ Cualquier dominio
¿Existen configuraciones DE DNS personalizadas? ☐ Servidores DNS personalizados en una red virtual
☐ Configuración de CoreDNS personalizada
Resultados de pruebas en diferentes niveles
Resultados de pruebas de resolución Obras Errores
Del pod al servicio CoreDNS
Dirección IP del pod al pod CoreDNS
De pod a DNS interno de Azure
Desde el pod al DNS de la red virtual
De nodo a DNS interno de Azure
De nodo a DNS de red virtual
Resultados del estado y el rendimiento de los nodos y los pods de CoreDNS
Resultados de la revisión del rendimiento Saludable Insalubre
Rendimiento de nodos
Rendimiento de pods de CoreDNS
Resultados de la captura de tráfico y del rendimiento de la resolución DNS
Criterios para la revisión de capturas No
La diferencia entre las consultas DNS y las respuestas supera el dos por ciento.
La latencia de DNS es más de un segundo

Mapeo de insumos requeridos a tipos de problemas

Para desarrollar la primera hipótesis, asigne cada uno de los resultados de las entradas necesarias a uno o varios de los tipos de problemas. Al analizar estos resultados en el contexto de los tipos de problemas, puede desarrollar hipótesis sobre las posibles causas principales de los problemas de resolución de DNS. A continuación, puede crear un plan de acción de investigación y solución de problemas específicos.

Punteros de mapeo de tipos de error

  • Si los resultados de la prueba muestran errores de resolución DNS en el servicio CoreDNS, o contienen errores de "tiempo de espera" al intentar llegar a puntos de conexión específicos, es posible que existan problemas de configuración o conectividad.

  • Las indicaciones de escasez de recursos informáticos a nivel de pod o nodo de CoreDNS podrían sugerir problemas de rendimiento.

  • Las capturas DNS que tienen una discrepancia considerable entre las consultas DNS y las respuestas DNS pueden indicar que se pierden paquetes. Este escenario sugiere que hay problemas de conectividad o rendimiento.

  • La presencia de configuraciones personalizadas en el nivel de red virtual o de Kubernetes puede contener configuraciones que no funcionan con AKS y CoreDNS según lo previsto.

Paso 3 de solución de problemas: Crear e implementar un plan de acción

Ahora debería tener suficiente información para crear e implementar un plan de acción. Las secciones siguientes contienen recomendaciones adicionales para formular el plan para tipos de problemas específicos.

Problemas de rendimiento

Si está tratando con problemas de rendimiento de resolución de DNS, revise e implemente los siguientes procedimientos recomendados e instrucciones.

Procedimiento recomendado Orientación
Configure un grupo de nodos del sistema dedicado que cumpla los requisitos mínimos de tamaño. Administración de grupos de nodos del sistema en Azure Kubernetes Service (AKS)
Para evitar la limitación de E/S de disco, use nodos que tengan discos de sistema operativo efímeros. Ajuste de tamaño predeterminado del disco del sistema operativo y problema 1373 de GitHub en Azure AKS
Siga los procedimientos recomendados de administración de recursos en las cargas de trabajo dentro de los nodos. Procedimientos recomendados para desarrolladores de aplicaciones para administrar recursos en Azure Kubernetes Services (AKS)

Si el rendimiento de DNS todavía no es lo suficientemente bueno después de realizar estos cambios, considere la posibilidad de usar EL DNS local del nodo.

Problemas de configuración

En función del componente, debe revisar y comprender las implicaciones de la configuración específica. Consulte la siguiente lista de documentación específica del componente para obtener detalles de configuración:

Problemas de conectividad de red

  • Los errores que implican la interfaz de red de contenedor (CNI) u otros componentes de Kubernetes o del sistema operativo suelen requerir la intervención del soporte técnico de AKS o del grupo de productos de AKS.

  • Los problemas de infraestructura, como errores de hardware o problemas de hipervisor, pueden requerir la colaboración de los equipos de soporte técnico de infraestructura. Como alternativa, estos problemas pueden tener características de recuperación automática.

Paso 4 de solución de problemas: Observar los resultados y extraer conclusiones

Observe los resultados de la implementación del plan de acción. En este momento, el plan de acción debe ser capaz de corregir o mitigar el problema.

Paso 5 de solución de problemas: Repetir según sea necesario

Si estos pasos de solución de problemas no resuelven el problema, repita los pasos de solución de problemas según sea necesario.

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de terceros que describe este artículo son fabricados por empresas independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.

Descargo de responsabilidad sobre contacto con terceros

Microsoft proporciona información de contacto de terceros para ayudarle a encontrar información adicional sobre este tema. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la exactitud de la información de contacto de terceros.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto a la comunidad de comentarios de Azure.