Auf dieser Seite erfahren Sie, wie Sie Probleme mit Cloud NAT-Paketverlusten in einem VPC-nativen privaten Cluster in Google Kubernetes Engine (GKE) beheben.
Knoten-VMs in VPC-nativen privaten GKE-Clustern haben keine externen IP-Adressen. Das bedeutet, dass Clients im Internet keine Verbindung zu den IP-Adressen der Knoten herstellen können. Mit Cloud NAT können Sie die externen IP-Adressen und Ports zuweisen, die es privaten Clustern ermöglichen, öffentliche Verbindungen herzustellen.
Wenn einer Knoten-VM die von Cloud NAT zugewiesenen externen Ports und IP-Adressen ausgehen, gehen Pakete verloren. Sie können dies vermeiden, indem Sie die Rate der ausgehenden Pakete reduzieren oder die Zuweisung der verfügbaren Cloud NAT-Quell-IP-Adressen und -Ports erhöhen. In den folgenden Abschnitten wird beschrieben, wie Sie Cloud NAT-Paketverluste im Zusammenhang mit privaten GKE-Clustern diagnostizieren und beheben.
Paketverlust diagnostizieren
In den folgenden Abschnitten wird erläutert, wie Sie mit Cloud Logging verlorene Pakete erfassen und mit Cloud Monitoring die Ursache dafür ermitteln.
Verlorene Pakete protokollieren
Sie können mit der folgenden Abfrage in Cloud Logging verlorene Pakete erfassen:
resource.type="nat_gateway" resource.labels.region=REGION resource.labels.gateway_name=GATEWAY_NAME jsonPayload.allocation_status="DROPPED"
Ersetzen Sie Folgendes:
REGION
: der Name der Region, in der sich der Cluster befindet.GATEWAY_NAME
: der Name des Cloud NAT-Gateways.
Dieser Befehl gibt eine Liste aller Pakete zurück, die von einem Cloud NAT-Gateway verworfen wurden. Die Ursache wird jedoch nicht ermittelt.
Ursachen für Paketverlust beobachten
Um die Ursachen für verlorene Pakete zu ermitteln, können Sie den Messwert-Beobachter in Cloud Monitoring abfragen. Pakete werden aus einem der folgenden drei Gründe verworfen:
OUT_OF_RESOURCES
ENDPOINT_INDEPENDENT_CONFLICT
NAT_ALLOCATION_FAILED
Mit der folgenden Abfrage können Sie Pakete ermitteln, die aufgrund von OUT_OF_RESOURCES
- oder ENDPOINT_ALLOCATION_FAILED
-Fehlercodes verworfen wurden:
fetch nat_gateway metric 'router.googleapis.com/nat/dropped_sent_packets_count' filter (resource.gateway_name == GATEWAY_NAME) align rate(1m) every 1m group_by [metric.reason], [value_dropped_sent_packets_count_aggregate: aggregate(value.dropped_sent_packets_count)]
Wenn Sie Pakete ermitteln, die aus diesen Gründen verworfen werden, finden Sie unter Pakete mit Grund verworfen: keine Ressourcen vorhanden und Pakete mit Grund verworfen: endpunktunabhängiger Konflikt Tipps zur Fehlerbehebung.
Mit der folgenden Abfrage können Sie Pakete ermitteln, die aufgrund des Fehlercodes NAT_ALLOCATION_FAILED
verworfen wurden:
fetch nat_gateway metric 'router.googleapis.com/nat/nat_allocation_failed' group_by 1m, [value_nat_allocation_failed_count_true: count_true(value.nat_allocation_failed)] every 1m
Wenn Sie Pakete ermitteln, die aus diesem Grund verworfen wurden, lesen Sie den Hilfeartikel Weitere IP-Adressen müssen zugewiesen werden.
Cloud NAT-Konfiguration prüfen
Wenn die vorherigen Abfragen leere Ergebnisse zurückgeben und GKE-Pods nicht mit externen IP-Adressen kommunizieren können, verwenden Sie die folgende Tabelle, um Probleme mit der Konfiguration zu beheben:
Configuration | Fehlerbehebung |
Der Cloud NAT-Dienst ist so konfiguriert, dass er nur auf den primären IP-Adressbereich des Subnetzes angewendet wird. |
Wenn Cloud NAT nur für den primären IP-Adressbereich des Subnetzes konfiguriert ist, müssen Pakete, die vom Cluster an externe IP-Adressen gesendet werden, eine Quellknoten-IP-Adresse haben. In dieser Cloud NAT-Konfiguration:
|
Der Cloud NAT-Dienst ist so konfiguriert, dass er nur auf den sekundären IP-Adressbereich des Subnetzes angewendet wird, der für Pod-IP-Adressen verwendet wird. |
Wenn Cloud NAT nur für den sekundären IP-Adressbereich des Subnetzes konfiguriert ist, der von den Pod-IPs des Clusters verwendet wird, müssen Pakete, die vom Cluster an externe IP-Adressen gesendet werden, eine Pod-IP-Adresse als Quelladresse haben. In dieser Cloud NAT-Konfiguration:
|
Paketverlust reduzieren
Nachdem Sie die Ursache für den Paketverlust ermittelt haben, können Sie die folgenden Empfehlungen berücksichtigen, um die Wahrscheinlichkeit zu verringern, dass das Problem in Zukunft wieder auftritt:
Konfigurieren Sie das Cloud NAT-Gateway für die dynamische Portzuweisung und erhöhen Sie die maximale Anzahl von Ports pro VM.
Wenn Sie die statische Portzuweisung verwenden, erhöhen Sie die Mindestanzahl der Ports pro VM.
Reduzieren Sie die Rate der ausgehenden Pakete Ihrer Anwendung. Wenn eine Anwendung mehrere ausgehende Verbindungen zur selben Ziel-IP-Adresse und zum selben Zielport herstellt, kann sie schnell alle Verbindungen verbrauchen, die Cloud NAT mit der Anzahl der zugewiesenen NAT-Quelladressen und Quellport-Tupeln zu diesem Ziel herstellen kann.
Weitere Informationen dazu, wie Cloud NAT NAT-Quelladressen und ‑Quellports zum Herstellen von Verbindungen verwendet, einschließlich Einschränkungen der Anzahl gleichzeitiger Verbindungen zu einem Ziel, finden Sie unter Ports und Verbindungen.
Verwenden Sie offene Verbindungen erneut, um die Rate der ausgehenden Verbindungen aus der Anwendung zu reduzieren. Gängige Methoden zur Wiederverwendung von Verbindungen sind Verbindungspooling, Multiplexing von Verbindungen mit Protokollen wie HTTP/2 oder das Herstellen persistenter Verbindungen, die für mehrere Anfragen wiederverwendet werden. Weitere Informationen finden Sie unter Ports und Verbindungen.
Nächste Schritte
Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.