Fehlerbehebung bei DNS in GKE


Auf dieser Seite wird beschrieben, wie Sie Probleme im Zusammenhang mit DNS-Anbietern in Google Kubernetes Engine-Clustern (GKE) beheben können.

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.

Cloud DNS für GKE-Ereignisse

In diesem Abschnitt werden häufige Cloud DNS-Probleme in GKE beschrieben.

Cloud DNS deaktiviert

Das folgende Ereignis tritt auf, wenn die Cloud DNS API deaktiviert ist:

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.

Dieser Fehler tritt auf, weil die Cloud DNS API nicht standardmäßig aktiviert ist. Sie müssen die Cloud DNS API manuell aktivieren.

Aktivieren Sie die Cloud DNS API, um das Problem zu beheben.

Fehler beim Senden von Anfragen an Cloud DNS: API-Ratenbegrenzung überschritten

Das folgende Ereignis tritt auf, wenn ein Projekt ein Cloud DNS-Kontingent oder -Limit überschreitet:

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.

Informationen zum Beheben dieses Problems finden Sie unter Cloud DNS-Kontingente und Compute Engine-Kontingente und -Limits. Sie können das Kontingent mit der Google Cloud Console erhöhen.

Aufgrund eines vorherigen Fehlers konnte keine Anfrage an Cloud DNS gesendet werden

Das folgende Ereignis tritt auf, wenn Fehler zu kaskadierenden Ausfällen führen:

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.

Prüfen Sie zur Behebung dieses Problems die Clusterereignisse, um die Quelle des ursprünglichen Fehlers zu ermitteln, und folgen Sie der Anleitung, um das Root-Problem zu beheben.

Im vorherigen Beispiel hat der Fehler InsufficientQuota für die verwaltete Zone kaskadierende Fehler ausgelöst. Der zweite Fehler für FailedPrecondition gibt an, dass ein vorheriger Fehler aufgetreten ist. Dies war dieses anfängliche Kontingentproblem. Um dieses Beispielproblem zu beheben, folgen Sie der Anleitung für den Cloud DNS-Kontingentfehler.

Antwortrichtlinie konnte nicht gebunden werden

Das folgende Ereignis tritt auf, wenn eine Antwortrichtlinie an das Netzwerk des Clusters gebunden ist und Cloud DNS for GKE versucht, eine Antwortrichtlinie an das Netzwerk zu binden:

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.

So beheben Sie das Problem:

  1. Rufen Sie die Antwortrichtlinie ab, die an das Netzwerk gebunden ist:

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

    Ersetzen Sie NETWORK_URL durch die Netzwerk-URL des Fehlers, z. B. https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME.

    Wenn die Ausgabe leer ist, befindet sich die Antwortrichtlinie möglicherweise nicht im selben Projekt. Fahren Sie mit dem nächsten Schritt fort, um nach der Antwortrichtlinie zu suchen.

    Wenn die Ausgabe in etwa so aussieht, fahren Sie mit Schritt 4 fort, um die Antwortrichtlinie zu löschen.

    [
       {
          "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. Rufen Sie mit dem IAM Policy Analyzer eine Liste der Projekte mit der Berechtigung dns.networks.bindDNSResponsePolicy ab.

  3. Prüfen Sie, ob jedes Projekt die Antwortrichtlinie hat, die an das Netzwerk gebunden ist:

    gcloud dns response-policies list --filter='networks.networkUrl:NETWORK_URL' \
        --project=PROJECT_NAME
    
  4. Löschen Sie die Antwortrichtlinie.

Ungültige Konfiguration in kube-dns angegeben

Das folgende Ereignis tritt auf, wenn Sie eine benutzerdefinierte kube-dns-ConfigMap anwenden, die für Cloud DNS for GKE nicht gültig ist:

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

Prüfen Sie die Details im Fehler für den ungültigen Teil der ConfigMap, um dieses Problem zu beheben. Im vorherigen Beispiel ist 8.8.8.256 keine gültige IP-Adresse.

Nächste Schritte