Keine Netzwerkverbindung zwischen Laufzeitebene und Steuerungsebene

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Für dieses Thema gibt es keine entsprechende Apigee Edge-Dokumentation.

Symptome

  • API-Produkte, Entwickler, Anwendungen werden nicht in die Apigee-Benutzeroberfläche eingefügt.
  • API-Proxy-Bereitstellungen werden nicht abgeschlossen.
  • Management API-Anfragen, die zum Lesen und Schreiben von API-Produkten, Entwicklern und Apps ausgeführt werden, schlagen fehl.

Fehlermeldungen

In diesem Abschnitt werden die möglichen Fehlermeldungen beschrieben, die angezeigt werden, wenn keine Netzwerkverbindung besteht.

ApigeeIssue

Wenn dieses Problem als ApigeeIssue gemeldet wurde, wenn der folgende Befehl ausgeführt wird:

kubectl -n APIGEE_NAMESPACE get apigeeissues

wobei APIGEE_NAMESPACE der Name für eine Gruppierung von Kubernetes-Ressourcen ist.

wird der folgende Fehlercode angezeigt:

NAME                               SEVERITY    AGE URL
control-plane-connectivity-failure Error       1hr https://cloud.google.com/apigee/docs/api-platform/troubleshoot/playbooks/no-network-connectivity

Apigee-UI-Seiten „API-Produkte“, „Entwickler“ und „Apps“

Auf den Seiten API-Produkte, Entwickler und Apps Apigee-UI wird der folgende Fehler angezeigt:

Error: no connections available from the Apigee connect agent(s):
refer to documentation to triage further.

apigee-synchronizer-Logs

Die folgende Fehlermeldung wird in den apigee-synchronizer-Protokollen angezeigt:

{"level":"SEVERE","thread":"Apigee-Timer-3","mdc":{"action":"SYNC","env":"dev",
  "org":"example-hybrid-dev"},"className":"com.apigee.httpclient.adaptor.RequestAdaptor",
  "method":"doSend","severity":"SEVERE","message":"request failed
  [CONTEXT ratelimit_period\u003d\"1 MINUTES [skipped: 1]\" ]",
  "formattedDate":"2023-02-01T06:27:48.700Z","logger":"SERVICES.HTTPCLIENTSERVICE",
  "exceptionStackTrace":"java.net.SocketTimeoutException: connect timed out
... com.apigee.httpclient.adaptor.RequestAdaptor.send(RequestAdaptor.java:251)
at com.apigee.hybrid.runtime.contract.sync.context.HttpContractDownloader.download(HttpContractDownloader.java:84)
at com.apigee.hybrid.runtime.contract.sync.context.ControlPlaneReplicationContext.getContract(ControlPlaneReplicationContext.java:66)

apigee-watcher-Logs

In den apigee-watcher-Protokollen wird die folgende Fehlermeldung angezeigt:

{"level":"error","ts":1675232549.5093117,"caller":"watcher/watcher.go:60",
"msg":"error during watch","name":"mpstatus","error":"INTERNAL: error sending
  mp status to mgmt: INTERNAL: failed to send runtime status
  Post \"https://apigee.googleapis.com/v1/organizations/example-hybrid-dev/instances/apigee-hybrid-australia-southeast1:reportStatus\":
  dial tcp 172.217.24.42:443: i/o timeout","stacktrace":
  "edge-internal.git.corp.google.com/apigee-watcher.git/watcher.
  (*Watcher).Start.func1.1\n\t/go/src/edge-internal/apigee-watcher/watcher/watcher.go:60"}

Mögliche Ursachen

Plattform Ursache Beschreibung
Alle Keine Netzwerkroute zum Internet verfügbar Wenn keine Netzwerkroute zum Internet verfügbar ist, können die Komponenten der Apigee-Laufzeitebene nicht mit den APIs der Apigee-Steuerungsebene kommunizieren.
Alle Apigee API-Endpunkte stehen nicht auf der Zulassungsliste Wenn eine Firewall vorhanden ist, wurden die Apigee API-Endpunkte möglicherweise nicht auf die Zulassungsliste gesetzt.
GKE Privater Google-Zugriff ist nicht aktiviert Wenn die Bereitstellung in GKE erfolgt, ist der privater Google-Zugriff möglicherweise nicht im Subnetz aktiviert.
Alle Unbekannter Netzwerkfehler Dieses Problem kann auftreten, wenn beim Herstellen einer Verbindung zum Internet ein unbekannter Fehler im Clusternetzwerk auftritt.

Ursache: Keine Netzwerkroute zum Internet verfügbar

Diagnose

  1. Prüfen Sie je nach verwendeter Plattform, ob eine Netzwerkroute vom Clusternetzwerk zum Internet verfügbar ist. Weitere Informationen zur Vernetzung in GKE finden Sie z. B. unter Netzwerkübersicht.
  2. Fragen Sie Ihr Infrastruktur- und Netzwerkteam, ob das Clusternetzwerk einen Weiterleitungsproxy-Server für die Verbindung mit dem Internet verwendet.

Lösung

  1. Wenden Sie sich an den Netzwerkadministrator und fügen Sie nach Möglichkeit eine Netzwerkroute zum Internet hinzu.
  2. Wenn ein Weiterleitungsproxy-Server für die Kommunikation zwischen dem Clusternetzwerk und dem Internet verwendet wird, konfigurieren Sie die Einstellungen für den Weiterleitungs-Proxyserver in Apigee mit der Datei overrides.yaml und wenden Sie diese Änderung mit dem Helm-Befehl auf die Laufzeitebene an:

    Probelauf:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
    --namespace APIGEE_NAMESPACE \
    --atomic \
    --set envgroup=ENV_GROUP \
    -f OVERRIDES_FILE \
    --dry-run=server
    

    Achten Sie darauf, dass alle gezeigten Einstellungen enthalten sind, einschließlich --atomic, damit die Aktion bei einem Fehler rückgängig gemacht wird.

    Ihre Installation wurde möglicherweise mit einem ENV_GROUP_RELEASE_NAME eingerichtet, das sich von ENV_GROUP unterscheidet. Informationen zu den Einstellungen finden Sie unter Apigee Hybrid mit Helm installieren.

    Installation des Diagramms:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
    --namespace APIGEE_NAMESPACE \
    --atomic \
    --set envgroup=ENV_GROUP \
    -f OVERRIDES_FILE
    

Ursache: Apigee API-Endpunkte stehen nicht auf der Zulassungsliste

Diagnose

Erkundigen Sie sich beim Netzwerkadministrator, ob die Liste der Apigee API-Endpunkte in der Firewall auf der Plattform, auf der Apigee installiert ist, auf der Zulassungsliste steht. Für GKE kann dies die Cloud Next Generation Firewall sein.

Lösung

Wenn die oben aufgeführten Apigee API-Endpunkte nicht auf der Zulassungsliste stehen, wenden Sie sich an den Netzwerkadministrator und erfüllen Sie diese Anforderung.

Ursache: Privater Google-Zugriff ist nicht aktiviert

Diagnose

  1. Wenn Apigee auf einem privaten GKE-Cluster ohne Zugang zum Internet eingesetzt wird, muss der private Google-Zugriff aktiviert werden, um den Komponenten der Apigee-Laufzeitebene den internen Zugriff auf Google APIs zu ermöglichen.
  2. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  3. Klicken Sie auf den Namen eines Netzwerks.
  4. Prüfen Sie auf dem Tab Subnetze in der Spalte Privater Google-Zugriff, ob das relevante Subnetz aktiviert ist. Sollte dies nicht der Fall sein, ist das der Grund für diesen Fehler.

Lösung

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf den Namen eines Netzwerks.
  3. Klicken Sie auf den Namen eines Subnetzes.
  4. Klicken Sie auf  Bearbeiten.
  5. Wählen Sie Privater Google-Zugriff – Ein aus.
  6. Klicken Sie auf Speichern. Nach der Aktivierung wird das Problem behoben.

Ursache: Unbekannter Netzwerkfehler

Diagnose

Wenden Sie sich an Ihren Netzwerkadministrator und prüfen Sie, ob im Clusternetzwerk unbekannte Fehler aufgetreten sind.

Lösung

Wenden Sie sich an Ihren Netzwerkadministrator, um die Probleme im Clusternetzwerk zu beheben. Sobald die Netzwerkprobleme behoben wurden, wird auch dieses Problem behoben.

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an den Google Cloud-Support:

  1. Die Google Cloud Projekt-ID.
  2. Der Name der Apigee Hybrid-Organisation.
  3. Die Ausgaben der folgenden Befehle, die auf allen Kubernetes-Clusterknoten ausgeführt werden:
    ping apigee.googleapis.com
    traceroute apigee.googleapis.com
    telnet apigee.googleapis.com 443
  4. Die Datei overrides.yaml, die alle vertraulichen Informationen maskiert.
  5. Kubernetes-Pod-Status in allen Namespaces:
    kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
  6. Der Cluster-Info-Dump von Kubernetes:

    Cluster-Info-Dump von Kubernetes generieren:

    kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump

    Cluster-Info-Dump von Kubernetes zippen:

    zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*