Symptom
In der Pod-Liste wird für Ihre apigee-ingressgateway
-Pods nur 1 von 2 Containern angezeigt.
Wenn Sie beispielsweise den folgenden Befehl ausführen:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Ausgabe:
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
Wenn Sie außerdem einen describe
-Befehl für einen der oben genannten Pods ausführen, schlägt die Bereitschaftsprüfung mit dem Statuscode 503 fehl.
Im Abschnitt Events
der Pod-Beschreibung wird möglicherweise die folgende Meldung angezeigt:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
Mögliche Ursache
Ursache | Beschreibung |
---|---|
Apigee-Ingress ist für das Abhören von Port 80 konfiguriert | Die Apigee-Ingress-Konfiguration auf Port 80 wird ab Apigee Hybrid 1.9 nicht mehr unterstützt. |
Ursache: Apigee Ingress ist so konfiguriert, dass Port 80 überwacht wird.
Dieses Problem wird dadurch verursacht, dass das Apigee Ingress-Gateway für das Abhören von Port 80 konfiguriert ist. Dies wird ab Apigee Hybrid 1.9 nicht mehr unterstützt.
Das kann passieren, wenn Sie ein Upgrade von einer früheren Version von Apigee Hybrid durchgeführt haben, in der Port 80 zulässig war, oder wenn eine andere Fehlkonfiguration dies ermöglicht hat.
Diagnose
-
Rufen Sie eine Liste Ihrer
apigee-ingressgateway
-Pods ab.Führen Sie dazu diesen Befehl aus:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Beispielausgabe:
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
-
Beschreiben Sie einen der aufgelisteten Pods, um die Ereignisse zu prüfen:
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_POD
Dabei ist APIGEE_INGRESSGATEWAY_POD ein
apigee-ingressgateway
-Pod, der in der Ausgabe des vorherigen Befehls aufgeführt ist.Beispielausgabe:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
Rufen Sie die Logs für den Pod APIGEE_INGRESSGATEWAY_POD ab.
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
Möglicherweise sehen Sie einen Logeintrag, der besagt, dass Port 80 aufgrund eines Fehlers mit verweigerter Berechtigung nicht gebunden werden konnte, gefolgt von einer Meldung, dass Envoy nicht bereit ist.
2025-09-11T06:16:45.457621Z error envoy config external/envoy/source/common/listener_manager/listener_manager_impl.cc:1186 listener '0.0.0.0_80' failed to bind or apply socket options: cannot bind '0.0.0.0:80': Permission denied ... 2025-09-11T06:16:46.365818Z warn Envoy proxy is NOT ready: config received from XDS server, but was rejected: cds updates: 1 successful, 0 rejected; lds updates: 0 successful, 1 rejected
- Sehen Sie sich die aktuelle
apigeeroute
-Konfiguration an, um die Konfiguration zu finden, bei der Port 80 (HTTP) aktiviert ist.-
Rufen Sie eine Liste der definierten Apigee-Routen ab.
kubectl -n apigee get apigeeroute
Beispielausgabe:
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Prüfen Sie in jedem
apigeeroute
, wo Port 80 definiert ist.Führen Sie den folgenden Befehl für jedes
apigeeroute
aus, das in der Ausgabe des vorherigen Befehls aufgeführt ist:kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
Dabei ist APIGEE_ROUTE_NAME der Name eines einzelnen
apigeeroute
.Beispielbefehl:
kubectl -n apigee get apigeeroute non-sni -o yaml
Beispielausgabe:
Der nicht-SNI-apiVersion: apigee.cloud.google.com/v1alpha2 kind: ApigeeRoute metadata: name: non-sni namespace: apigee resourceVersion: "240441468" spec: enableNonSniClient: true hostnames: - '*' ports: - number: 443 protocol: HTTPS tls: credentialName: myorg-hyb-dev-grp minProtocolVersion: TLS_AUTO mode: SIMPLE - number: 80 protocol: HTTP selector: app: apigee-ingressgateway status: lastAppliedGeneration: 1 state: running
apigeeroute
zeigt, dass Port 80 als Teil dieser Route aktiviert ist.
-
Rufen Sie eine Liste der definierten Apigee-Routen ab.
Lösung
Um dieses Problem zu beheben, deaktivieren Sie Port 80 in der ursprünglichen YAML-Datei apigeeroute
, indem Sie die folgenden Zeilen entfernen.
- number: 80 protocol: HTTP
Wenn Sie die ursprüngliche YAML-Datei apigeeroute
nicht haben, können Sie so vorgehen:
- Exportieren Sie die aktuelle Konfiguration mit dem folgenden Befehl:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yaml
Dabei ist APIGEE_ROUTE_NAME die
apigeeroute
, die aktualisiert wird, um die Konfiguration für Port 80 zu entfernen.Dabei ist APIGEE_ROUTE_FILENAME der Name der Ausgabedatei mit dem YAML-Inhalt
apigeeroute
. -
Bearbeiten Sie die YAML-Datei
apigeeroute
, um die Konfiguration für Port 80 zu entfernen.Öffnen Sie die Datei APIGEE_ROUTE_FILENAME in einem Texteditor und entfernen Sie die folgenden Zeilen:
- number: 80 protocol: HTTP
-
Ersetzen Sie die vorhandene
apigeeroute
durch die geänderte YAML-Datei:kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
Dabei ist APIGEE_ROUTE_FILENAME die Ausgabedatei mit der aktualisierten
apigeeroute
-Konfiguration. -
Die
apigee-ingressgateway
-Pods sollten jetzt mit 2/2 Containern ausgeführt werden. Wenn nicht, löschen Sie die Pods, damit automatisch neue erstellt werden können.NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 2/2 Running 0 25h apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 2/2 Running 0 26h
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 Customer Care:- Overrides.yaml
- Ausgabe der folgenden Befehle:
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- Führen Sie für jede der angegebenen Routen Folgendes aus:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- Alternativ können Sie die Von Apigee Hybrid zu erfassende Daten ausführen und bereitstellen.