Resolver problemas de DNS no GKE


Nesta página, mostramos como resolver problemas relacionados a provedores de DNS em clusters do Google Kubernetes Engine (GKE).

Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.

Eventos do Cloud DNS para GKE

Nesta seção, detalhamos problemas comuns do Cloud DNS no GKE.

Cloud DNS desativado

O evento a seguir ocorre quando a API Cloud DNS está desativada:

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.

Esse erro ocorre porque a API Cloud DNS não está ativada por padrão. Ative a API Cloud DNS manualmente.

Para resolver o problema, ative a API Cloud DNS.

Falha ao enviar solicitações para o Cloud DNS: limite de taxa de API excedido.

O evento a seguir ocorre quando um projeto excede uma cota ou limite do 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 esse problema, consulte as cotas do Cloud DNS e as cotas e limites do Compute Engine. É possível aumentar a cota usando o console do Google Cloud.

Falha ao enviar para solicitações para o Cloud DNS devido a um erro anterior

O evento a seguir ocorre quando os erros causam falhas em cascata:

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.

Para resolver esse problema, verifique os eventos do cluster para encontrar a origem do erro original e siga as instruções para resolver esse problema raiz.

No exemplo anterior, o erro InsufficientQuota da zona gerenciada acionou falhas em cascata. O segundo erro para FailedPrecondition indica que ocorreu um erro anterior, que era o problema inicial de cota insuficiente. Para resolver esse problema de exemplo, siga as orientações relacionadas ao erro de cota do Cloud DNS.

Falha ao vincular a política de resposta

O evento a seguir ocorre quando uma política de resposta está vinculada à rede do cluster e o Cloud DNS para GKE tenta vincular uma política de resposta à rede:

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 resolver o problema, siga estas etapas:

  1. Receba a política de resposta vinculada à rede:

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

    Substitua NETWORK_URL pelo URL da rede do erro, como https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME.

    Se a saída estiver vazia, a política de resposta pode não estar no mesmo projeto. Vá para a próxima etapa para pesquisar a política de resposta.

    Se a saída for semelhante a esta, pule para a etapa 4 para excluir a política de resposta.

    [
       {
          "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. Receba uma lista de projetos com a permissão dns.networks.bindDNSResponsePolicy usando o IAM Policy Analyzer.

  3. Verifique se cada projeto tem a política de resposta vinculada à rede:

    gcloud dns response-policies list --filter='networks.networkUrl:NETWORK_URL' \
        --project=PROJECT_NAME
    
  4. Exclua a política de resposta.

Configuração inválida especificada em kube-dns

O evento a seguir ocorre quando você aplica um kube-dns ConfigMap inválido para o Cloud DNS para o 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

Para resolver esse problema, revise os detalhes no erro sobre a parte inválida do ConfigMap. No exemplo anterior, 8.8.8.256 não é um endereço IP válido.

A seguir