Résoudre les problèmes de DNS dans GKE


Cette page explique comment résoudre les problèmes liés aux fournisseurs DNS dans les clusters Google Kubernetes Engine (GKE).

Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.

Événements Cloud DNS pour GKE

Cette section décrit les problèmes courants liés à Cloud DNS dans GKE.

API Cloud DNS désactivée

L'événement suivant se produit lorsque l'API Cloud DNS est désactivée :

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.

Cette erreur se produit, car l'API Cloud DNS n'est pas activée par défaut. Vous devez l'activer manuellement.

Pour résoudre le problème, activez l'API Cloud DNS.

Échec de l'envoi de requêtes à Cloud DNS : limite de débit des API dépassée

L'événement suivant se produit lorsqu'un projet a dépassé un quota ou une limite 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.

Pour résoudre ce problème, vérifiez les quotas Cloud DNS et les quotas et limites de Compute Engine. Vous pouvez augmenter votre quota à l'aide de la console Google Cloud.

Échec de l'envoi de requêtes à Cloud DNS en raison d'une erreur précédente

L'événement suivant se produit lorsque des erreurs entraînent des défaillances en cascade :

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.

Pour résoudre ce problème, recherchez la source de l'erreur d'origine dans les événements de cluster et suivez les instructions correspondantes.

Dans l'exemple précédent, l'erreur InsufficientQuota pour la zone gérée a déclenché des défaillances en cascade. La deuxième erreur pour FailedPrecondition indique qu'une erreur précédente s'est produite (problème de quota initial insuffisant). Pour résoudre cet exemple de problème, suivez les instructions concernant l'erreur de quota Cloud DNS.

Échec de la liaison de la stratégie de réponse

L'événement suivant se produit lorsqu'une stratégie de réponse est liée au réseau du cluster et que Cloud DNS pour GKE tente de lier une stratégie de réponse au réseau :

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.

Pour résoudre ce problème, procédez comme suit :

  1. Obtenez la stratégie de réponse liée au réseau :

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

    Remplacez NETWORK_URL par l'URL du réseau obtenue à partir de l'erreur (par exemple, https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME).

    Si la sortie est vide, la règle de réponse ne se trouve peut-être pas dans le même projet. Passez à l'étape suivante pour rechercher la stratégie de réponse.

    Si le résultat ressemble à ce qui suit, passez à l'étape 4 pour supprimer la stratégie de réponse.

    [
       {
          "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. Obtenez une liste des projets avec l'autorisation dns.networks.bindDNSResponsePolicy à l'aide d'IAM Policy Analyzer.

  3. Vérifiez chaque projet pour voir s'il contient la stratégie de réponse liée au réseau :

    gcloud dns response-policies list --filter='networks.networkUrl:NETWORK_URL' \
        --project=PROJECT_NAME
    
  4. Supprimez la stratégie de réponse.

Configuration non valide spécifiée dans kube-dns

L'événement suivant se produit lorsque vous appliquez un ConfigMap kube-dns personnalisé qui n'est pas valide pour Cloud DNS pour 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

Pour résoudre ce problème, examinez les détails de l'erreur concernant la partie non valide du ConfigMap. Dans l'exemple précédent, 8.8.8.256 n'est pas une adresse IP valide.

Étapes suivantes