Sintomo
I tuoi pod apigee-ingressgateway
mostrano solo 1 dei 2 container in esecuzione quando ricevi l'elenco dei pod.
Ad esempio, quando esegui questo comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Output:
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
Inoltre, l'esecuzione di un comando describe
su uno dei pod precedenti mostrerà il probe di preparazione non riuscito con un codice di stato 503.
Ad esempio, nella sezione Events
della descrizione del podcast, potresti visualizzare il seguente messaggio:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
Possibile causa
Causa | Descrizione |
---|---|
L'ingresso Apigee è configurato per l'ascolto sulla porta 80 | A partire da Apigee Hybrid 1.9, la configurazione dell'ingresso Apigee sulla porta 80 non è più supportata. |
Causa: l'ingresso Apigee è configurato per l'ascolto sulla porta 80
Questo problema è causato dal gateway in entrata Apigee configurato per l'ascolto sulla porta 80, che non è più supportata a partire da Apigee Hybrid 1.9.
Ciò può accadere se hai eseguito l'upgrade da una versione precedente di Apigee Hybrid che consentiva la porta 80 o se è presente un'altra configurazione errata che la abilitava.
Diagnosi
-
Ottieni un elenco dei tuoi pod
apigee-ingressgateway
.Esegui questo comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Esempio di output
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
-
Descrivi uno dei pod elencati per controllare gli eventi:
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_POD
Dove APIGEE_INGRESSGATEWAY_POD è un pod
apigee-ingressgateway
elencato nell'output del comando precedente.Esempio di output:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
Recupera i log per il pod APIGEE_INGRESSGATEWAY_POD.
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
Potresti visualizzare una voce di log che indica che l'associazione della porta 80 non è riuscita a causa di un errore di autorizzazione negata, seguita da un messaggio che indica che Envoy non è pronto.
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
- Esamina la configurazione
apigeeroute
attuale per trovare quella con la porta 80 (HTTP) abilitata.-
Visualizza un elenco delle route Apigee definite.
kubectl -n apigee get apigeeroute
Esempio di output:
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Controlla ogni
apigeeroute
per vedere dove è definita la porta 80.Esegui questo comando per ogni
apigeeroute
elencato nell'output del comando precedente:kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
Dove APIGEE_ROUTE_NAME è il nome di un singolo
apigeeroute
.Comando di esempio:
kubectl -n apigee get apigeeroute non-sni -o yaml
Esempio di output:
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
non-sni mostra che la porta 80 è abilitata come parte di questa route.
-
Visualizza un elenco delle route Apigee definite.
Risoluzione
Per risolvere il problema, disattiva la porta 80 nel file apigeeroute
yaml originale rimuovendo le seguenti righe.
- number: 80 protocol: HTTP
Se non hai il file YAML apigeeroute
originale, puoi procedere nel seguente modo:
- Esporta la configurazione attuale con il seguente comando:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yaml
dove APIGEE_ROUTE_NAME è
apigeeroute
in fase di aggiornamento per rimuovere la configurazione della porta 80.dove APIGEE_ROUTE_FILENAME è il nome del file di output contenente i contenuti YAML di
apigeeroute
. -
Modifica il file YAML
apigeeroute
per rimuovere la configurazione della porta 80.Apri il file APIGEE_ROUTE_FILENAME in un editor di testo e rimuovi le seguenti righe:
- number: 80 protocol: HTTP
-
Sostituisci il file
apigeeroute
esistente con il file YAML modificato:kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
dove APIGEE_ROUTE_FILENAME è il file di output contenente la configurazione
apigeeroute
aggiornata. -
I pod
apigee-ingressgateway
ora dovrebbero essere eseguiti con 2/2 container. In caso contrario, elimina i pod per consentire la creazione automatica di nuovi pod.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
Deve raccogliere informazioni diagnostiche
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche e contatta l'assistenza clienti Google Cloud:- Overrides.yaml
- Output dei seguenti comandi:
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- Per ciascuno degli itinerari indicati, esegui:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- In alternativa, puoi eseguire e fornire le informazioni di Apigee hybrid must-gather.