Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Visualizza
Documentazione di Apigee Edge.
Sintomi
I deployment di proxy API hanno esito negativo con avviso Nessun pod di runtime attivo in Apigee hybrid nell'interfaccia utente.
Messaggi di errore
In Dettagli viene visualizzato l'avviso Nessun pod di runtime attivo finestra di dialogo accanto al messaggio di errore Problemi di deployment in ENVIRONMENT: REVISION_NUMBER nella pagina del proxy API:
![](https://cloud.google.com/static/apigee/docs/api-platform/images/no-active-runtime-pods-warning.png?authuser=2&hl=it)
Questo problema può manifestarsi come errori diversi in altre pagine di risorse dell'interfaccia utente. Ecco alcuni messaggi di errore di esempio:
Messaggio di errore n. 1 dell'interfaccia utente ibrida: errore Datastore
Potresti osservare l'errore Datastore sui prodotti API e sulle app pagine della UI ibrida come illustrato di seguito:
![](https://cloud.google.com/static/apigee/docs/api-platform/images/no-active-runtime-pods-datastore-error.png?authuser=2&hl=it)
Messaggio di errore 2 della UI ibrida: errore interno del server
Potresti notare un errore interno del server nella pagina Sviluppatori dell'interfaccia utente, come mostrato di seguito:
![](https://cloud.google.com/static/apigee/docs/api-platform/images/no-active-runtime-pods-internal-server-error.png?authuser=2&hl=it)
Output comando kubectl
Potresti notare che gli stati dei pod apiege-mart
, apigee-runtime
e apigee-
synchronizer
sono cambiati in CrashLoopBackOff
nel
Output comando kubectl get pods
:
![](https://cloud.google.com/static/apigee/docs/api-platform/images/no-active-runtime-pods-kubectl-cmd-output.png?authuser=2&hl=it)
Messaggi di errore del log dei componenti
Nel apigee-runtime
osserverai i seguenti errori di errore del probe di attività
log dei pod nelle release ibride di Apigee >= 1.4.0:
{"timestamp":"1621575431454","level":"ERROR","thread":"qtp365724939-205","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Error occurred : probe failed Probe cps-datastore- connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}\n\n\tcom.apigee.probe.ProbeAPI.getResponse(ProbeAPI.java:66)\n\tcom.apigee.probe.ProbeAPI.getLiv eStatus(ProbeAPI.java:55)\n\tsun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)\n\tsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\t ","context":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"} {"timestamp":"1621575431454","level":"ERROR","thread":"qtp365724939-205","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Returning error response : ErrorResponse{errorCode = probe.ProbeRunError, errorMessage = probe failed Probe cps-datastore-connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}}","context":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"}
Noterai il seguente errore Cannot build a cluster without contact points
nei log dei pod apigee-synchronizer
nelle release ibride di Apigee >= 1.4.0:
{"timestamp":"1621575636434","level":"ERROR","thread":"main","logger":"KERNEL.DEPLOYMENT","message": "ServiceDeployer.deploy() : Got a life cycle exception while starting service [SyncService, Cannot build a cluster without contact points] : {}","context":"apigee-service- logs","exception":"java.lang.IllegalArgumentException: Cannot build a cluster without contact points\n\tat com.datastax.driver.core.Cluster.checkNotEmpty(Cluster.java:134)\n\tat com.datastax.driver.core.Cluster.<init>(Cluster.java:127)\n\tat com.datastax.driver.core.Cluster.buildFrom(Cluster.java:193)\n\tat com.datastax.driver.core.Cluster$Builder.build(Cluster.java:1350)\n\tat io.apigee.persistence.PersistenceContext.newCluster(PersistenceContext.java:214)\n\tat io.apigee.persistence.PersistenceContext.<init>(PersistenceContext.java:48)\n\tat io.apigee.persistence.ApplicationContext.<init>(ApplicationContext.java:19)\n\tat io.apigee.runtimeconfig.service.RuntimeConfigServiceImpl.<init>(RuntimeConfigServiceImpl.java:75) \n\tat io.apigee.runtimeconfig.service.RuntimeConfigServiceFactory.newInstance(RuntimeConfigServiceFactory. java:99)\n\tat io.apigee.common.service.AbstractServiceFactory.initializeService(AbstractServiceFactory.java:301)\n \tat ...","severity":"ERROR","class":"com.apigee.kernel.service.deployment.ServiceDeployer","method":"sta rtService"}
Noterai i seguenti errori di errore del probe di attività nel pod apigee-mart
Log nelle release ibride di Apigee >= 1.4.0:
{"timestamp":"1621576757592","level":"ERROR","thread":"qtp991916558-144","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Error occurred : probe failed Probe cps-datastore- connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}\n\n\tcom.apigee.probe.ProbeAPI.getResponse(ProbeAPI.java:66)\n\tcom.apigee.probe.ProbeAPI.getLiv eStatus(ProbeAPI.java:55)\n\tsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\t","conte xt":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"} {"timestamp":"1621576757593","level":"ERROR","thread":"qtp991916558-144","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Returning error response : ErrorResponse{errorCode = probe.ProbeRunError, errorMessage = probe failed Probe cps-datastore-connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}}","context":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"}
Informazioni sull'errore Nessun pod di runtime attivo
Nella release Apigee ibrida 1.4.0, la funzionalità di probe di attività è stata aggiunta
apigee-runtime
e apigee-mart
per controllare lo stato del
Pod Cassandra. Se tutti i pod Cassandra non sono più disponibili, i probe di attività del
apigee-runtime
e apigee-mart
pod non riusciranno. Di conseguenza,
apigee-runtime
e apigee-mart
i pod entreranno
CrashLoopBackOff
stato che causa la mancata riuscita dei deployment dei proxy API con avviso
No active runtime pods
.
Anche il pod apigee-synchronizer
passerà allo stato CrashLoopBackOff
a causa della mancata disponibilità dei pod Cassandra.
Cause possibili
Ecco alcune possibili cause di questo errore:
Causa | Descrizione |
---|---|
I pod Cassandra non sono attivi | I pod Cassandra non sono attivi; pertanto, i pod apigee-runtime non potranno comunicare con il database Cassandra. |
Replica Cassandra configurata con un solo pod | Avere un solo pod Cassandra potrebbe diventare un single point of failure. |
Causa: i pod Cassandra non sono attivi
Durante il processo di deployment del proxy API, i pod apigee-runtime
si connettono
Database Cassandra per recuperare risorse come le mappe chiave-valore (KVM) e le cache definite nel proxy API. Se non sono presenti
I pod Cassandra sono in esecuzione. I pod apigee-runtime
non potranno connettersi
Cassandra. Questo porta all'errore di deployment del proxy API.
Diagnosi
- Elenca i pod Cassandra:
kubectl -n apigee get pods -l app=apigee-cassandra
Esempio di output 1:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 0/1 Pending 0 9m23s
Esempio di output 2:
NAME READY STATUS RESTARTS AGE apigee-cassandra-0 0/1 CrashLoopBackoff 0 10m
- Verifica lo stato di ogni pod Cassandra. Lo stato di tutti i pod Cassandra deve essere in
Running
. Se uno dei pod di Cassandra si trova in uno stato diverso, potrebbe essere il motivo di questo problema. Per risolvere il problema, procedi nel seguente modo:
Risoluzione
- Se uno dei pod di Cassandra è in stato
Pending
, fai riferimento a I pod Cassandra sono bloccati nello stato In attesa per risolvere il problema. - Se uno dei pod di Cassandra è in stato
CrashLoopBackoff
, fai riferimento a I pod Cassandra sono bloccati nello stato CrashLoopBackoff per risolvere il problema.Esempio di output:
kubectl -n apigee get pods -l app=apigee-runtime NAME READY STATUS RESTARTS AGE apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-2gnch 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-42jdv 1/1 Running 13 45m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-l7wq7 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-q2thb 1/1 Running 8 38m
kubectl -n apigee get pods -l app=apigee-mart NAME READY STATUS RESTARTS AGE apigee-mart-apigee-hybrid-s-2664b3e-143-u0a5c-rtg69 2/2 Running 8 28m
kubectl -n apigee get pods -l app=apigee-synchronizer NAME READY STATUS RESTARTS AGE apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp269nb 2/2 Running 10 29m apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp2w2jp 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpkfkvq 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpxmzhn 2/2 Running 0 4m40s
Causa: replica Cassandra configurata con un solo pod
Se il conteggio delle repliche Cassandra è configurato su uno, sarà disponibile un solo pod Cassandra
nel runtime. Di conseguenza, apigee-runtime
pod potrebbe riscontrare problemi di connettività
se il pod Cassandra non è disponibile per un determinato periodo di tempo.
Diagnosi
- Ottieni il set stateful Cassandra e controlla il numero attuale di repliche:
kubectl -n apigee get statefulsets -l app=apigee-cassandra
Esempio di output:
NAME READY AGE apigee-cassandra-default 1/1 21m
- Se il conteggio delle repliche è configurato su 1, segui questi passaggi per aumentarlo un numero più alto.
Risoluzione
I deployment ibridi non di produzione Apigee potrebbero avere Conteggio repliche Cassandra impostato su 1. Se l'alta disponibilità di Cassandra è importante in di produzione, aumenta il numero di repliche a 3 per risolvere il problema.
Per risolvere il problema, procedi nel seguente modo:
- Aggiorna il file
overrides.yaml
e imposta il conteggio delle repliche Cassandra su 3:cassandra: replicaCount: 3
Per informazioni sulla configurazione di Cassandra, consulta Riferimento alle proprietà di configurazione.
- Applica la configurazione precedente utilizzando l'interfaccia a riga di comando
apigeectl
:cd path/to/hybrid-files apigeectl apply -f overrides/overrides.yaml
- Ottieni il set stateful Cassandra e controlla il numero attuale di repliche:
kubectl -n get statefulsets -l app=apigee-cassandra
Esempio di output:
NAME READY AGE apigee-cassandra-default 3/3 27m
- Recupera i pod Cassandra e controlla il conteggio delle istanze attuali. Se tutti i pod non sono pronti
nello stato
Running
attendono la creazione dei nuovi pod Cassandra attivato:kubectl -n get pods -l app=apigee-cassandra
Esempio di output:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 29m apigee-cassandra-default-1 1/1 Running 0 21m apigee-cassandra-default-2 1/1 Running 0 19m
Esempio di output:
kubectl -n apigee get pods -l app=apigee-runtime NAME READY STATUS RESTARTS AGE apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-2gnch 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-42jdv 1/1 Running 13 45m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-l7wq7 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-q2thb 1/1 Running 8 38m
kubectl -n apigee get pods -l app=apigee-mart NAME READY STATUS RESTARTS AGE apigee-mart-apigee-hybrid-s-2664b3e-143-u0a5c-rtg69 2/2 Running 8 28m
kubectl -n apigee get pods -l app=apigee-synchronizer NAME READY STATUS RESTARTS AGE apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp269nb 2/2 Running 10 29m apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp2w2jp 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpkfkvq 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpxmzhn 2/2 Running 0 4m40s
Raccogliere dati diagnostici
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati le informazioni di diagnostica e contatta l'assistenza clienti Google Cloud.
- ID progetto Google Cloud
- Organizzazione ibrida/Apigee Apigee
- Per Apigee hybrid: il
overrides.yaml
, mascherando le informazioni sensibili - Stato dei pod Kubernetes in tutti gli spazi dei nomi:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
- Dump delle informazioni sul cluster Kubernetes:
# generate kubernetes cluster-info dump kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump # zip kubernetes cluster-info dump zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*
Riferimenti
- Scalabilità orizzontale di Cassandra
- Introspezione e debug delle applicazioni Kubernetes
- Scheda di riferimento di kubectl