Soluciona problemas de DNS en GKE


En esta página, se muestra cómo resolver problemas relacionados con los proveedores de DNS en clústeres de Google Kubernetes Engine (GKE).

Consulta Depura la resolución de DNS para obtener información general sobre el diagnóstico de problemas de DNS de Kubernetes y Solución de problemas a fin de obtener más información sobre el diagnóstico de problemas con Cloud DNS.

También puedes habilitar Logging de Cloud DNS.

Eventos de Cloud DNS para GKE

GKE registra los eventos que ocurren en Cloud DNS.

Cloud DNS inhabilitado

El siguiente evento ocurre cuando se inhabilita la API de Cloud DNS:

Warning   FailedPrecondition        service/default-http-backend
Failed to send requests to Cloud DNS: Cloud DNS API Disabled. Please enable the Cloud DNS API in your project PROJECT_NAME: Cloud DNS API has not been used in project PROJECT_NUMBER before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/dns.googleapis.com/overview?project=PROJECT_NUMBER then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

Este error se produce porque la API de Cloud DNS no está habilitada de forma predeterminada; por lo que debes habilitarla de forma manual.

Para resolver el problema, habilita la API de Cloud DNS.

No se pudieron enviar solicitudes a Cloud DNS: se superó el límite de frecuencia de la API.

El siguiente evento ocurre cuando un proyecto superó un límite o una cuota de Cloud DNS:

kube-system   27s         Warning   InsufficientQuota
managedzone/gke-cluster-quota-ee1bd2ca-dns     Failed to send requests to Cloud DNS: API rate limit exceeded. Contact Google Cloud support team to request a quota increase for your project PROJECT_NAME: Quota exceeded for quota metric 'Write requests' and limit 'Write limit for a minute for a region' of service 'dns.googleapis.com' for consumer 'project_number:PROJECT_NUMBER.

Para resolver este problema, revisa las cuotas de Cloud DNS y las cuotas y límites de Compute Engine. Puedes aumentar la cuota con la consola de Google Cloud.

No se pudieron enviar a las solicitudes a Cloud DNS debido a un error anterior

El siguiente evento ocurre cuando los errores causan fallas en cascada:

kube-system   27s         Warning   InsufficientQuota
managedzone/gke-cluster-quota-ee1bd2ca-dns     Failed to send requests to Cloud DNS: API rate limit exceeded. Contact Google Cloud support team to request a quota increase for your project PROJECT_NAME: Quota exceeded for quota metric 'Write requests' and limit 'Write limit for a minute for a region' of service 'dns.googleapis.com' for consumer 'project_number:PROJECT_NUMBER.
kube-system   27s         Warning   FailedPrecondition               service/default-http-backend                         Failed to send requests to Cloud DNS due to a previous error. Please check the cluster events.

A fin de resolver este problema, revisa los eventos del clúster para encontrar el error y sigue las instrucciones.

En el ejemplo anterior, el error InsufficientQuota para la zona administrada activó fallas en cascada, y el error se registra como un evento que indica un error anterior. En este caso, deberás seguir las instrucciones para el error de cuota de Cloud DNS a fin de resolver el problema.

No se pudo vincular la política de respuesta

El siguiente evento ocurre cuando una política de respuesta está vinculada a la red del clúster y Cloud DNS para GKE intenta vincular una política de respuesta a la red:

kube-system   9s          Warning   FailedPrecondition               responsepolicy/gke-2949673445-rp
Failed to bind response policy gke-2949673445-rp to test. Please verify that another Response Policy is not already associated with the network: Network 'https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/NETWORK_NAME' cannot be bound to this response policy because it is already bound to another response policy.
kube-system   9s          Warning   FailedPrecondition               service/kube-dns
Failed to send requests to Cloud DNS due to a previous error. Please check the cluster events.

Para solucionar el problema, haz lo siguiente:

  1. Obtén la política de respuesta vinculada a la red:

    gcloud dns response-policies list --filter='networks.networkUrl: NETWORK_URL'
    

    Reemplaza NETWORK_URL con la URL de la red del error. Por ejemplo, https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME

    Si el resultado está vacío, es posible que la política de respuesta no esté en el mismo proyecto. Continúa con el paso siguiente para buscar la política de respuesta.

    Si el resultado es similar al siguiente, ve al paso 4 para borrar la política de respuesta.

    [
       {
          "description": "Response Policy for GKE cluster \"CLUSTER_NAME\" with cluster suffix \"cluster.local.\" in project \"PROJECT_ID\" with scope \"CLUSTER_SCOPE\".",
          ...
          "kind": "dns#responsePolicy",
          "responsePolicyName": "gke-CLUSTER_NAME-POLICY_ID-rp"
       }
    ]
    
  2. Obtén una lista de proyectos con el permiso dns.networks.bindDNSResponsePolicy mediante el Analizador de políticas de IAM.

  3. Comprueba si cada proyecto tiene la política de respuesta que está vinculada a la red:

    gcloud dns response-policies list --filter='networks.networkUrl:NETWORK_URL' \
        --project=PROJECT_NAME
    
  4. Borra la política de respuesta.

Se especificó una configuración no válida en kube-dns

El siguiente evento ocurre cuando aplicas un Config-kube-dns personalizado que no es válido para Cloud DNS para GKE:

kube-system   49s         Warning   FailedValidation                 configmap/kube-dns
Invalid configuration specified in kube-dns: error parsing stubDomains for ConfigMap kube-dns: dnsServer [8.8.8.256] validation: IP address "8.8.8.256" invalid

A fin de resolver este problema, sigue los detalles del error para solucionar la parte no válida del ConfigMap. En el ejemplo anterior, 8.8.8.256 no es una dirección IP válida.