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:
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" } ]
Rufen Sie mit dem IAM Policy Analyzer eine Liste der Projekte mit der Berechtigung
dns.networks.bindDNSResponsePolicy
ab.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
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
Allgemeine Informationen zur Diagnose von Kubernetes DNS-Problemen finden Sie unter Debugging bei der DNS-Auflösung.
Zur Diagnose von Cloud DNS-Problemen können Sie Cloud DNS Logging aktivieren und die Dokumentation zur Fehlerbehebung bei Cloud DNS lesen.
- Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.