Questa pagina ti aiuta a risolvere i problemi relativi ai pod che riscontrano eventi CrashLoopBackOff
in Google Kubernetes Engine (GKE).
Questa pagina è rivolta agli sviluppatori di applicazioni che vogliono identificare problemi a livello di app, come errori di configurazione o bug correlati al codice, che causano l'arresto anomalo dei container. È anche per gli amministratori e gli operatori della piattaforma che devono identificare le cause principali a livello di piattaforma per i riavvii dei container, come esaurimento delle risorse, interruzioni dei nodi o probe di attività configurati in modo errato. Per maggiori informazioni sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti, consulta Ruoli utente e attività comuni di GKE. Trusted Cloud by S3NS
Comprendere un evento CrashLoopBackOff
Quando il pod è bloccato nello stato CrashLoopBackOff
, un container al suo interno
viene avviato e arrestato o chiuso ripetutamente. Questo CrashLoop attiva
Kubernetes per tentare di riavviare il container rispettando il suo
restartPolicy
. A ogni riavvio non riuscito, il ritardo BackOff prima del tentativo successivo aumenta in modo esponenziale (ad esempio, 10 secondi, 20 secondi, 40 secondi), fino a un massimo di cinque minuti.
Sebbene questo evento indichi un problema all'interno del contenitore, è anche un
prezioso segnale diagnostico. Un evento CrashLoopBackOff
conferma che molti
passaggi fondamentali della creazione del pod, come l'assegnazione a un nodo e il pull dell'immagine
container, sono già stati completati. Queste informazioni ti consentono di concentrare l'indagine sull'app o sulla configurazione del container, anziché sull'infrastruttura del cluster.
Lo stato CrashLoopBackOff
si verifica a causa del modo in cui Kubernetes, in particolare
kubelet, gestisce l'arresto dei container in base alle
norme di riavvio del pod.
Il ciclo in genere segue questo schema:
- Il container viene avviato.
- Il container esce.
- kubelet osserva il container arrestato e lo riavvia in base al
restartPolicy
del pod. - Questo ciclo si ripete, con il container riavviato dopo un ritardo di backoff esponenziale crescente.
Il restartPolicy
del Pod è la chiave di questo comportamento. La policy predefinita, Always
, è la causa più comune di questo ciclo perché riavvia un container se esce per qualsiasi motivo, anche dopo un'uscita riuscita. La policy OnFailure
ha meno probabilità di causare un loop perché si riavvia solo con codici di uscita diversi da zero, mentre la policy Never
evita completamente il riavvio.
Identificare i sintomi di un evento CrashLoopBackOff
Un pod con lo stato CrashLoopBackOff
è l'indicazione principale di un
evento CrashLoopBackOff
.
Tuttavia, potresti riscontrare alcuni sintomi meno evidenti di un evento CrashLoopBackOff
:
- Zero repliche integre per un workload.
- Una forte diminuzione delle repliche integre.
- I workload con la scalabilità automatica orizzontale dei pod abilitata vengono scalati lentamente o non riescono a scalare.
Se un carico di lavoro system
(ad esempio, un agente di logging o delle metriche) ha lo stato
CrashLoopBackOff
, potresti notare anche i seguenti sintomi:
- Alcune metriche di GKE non vengono segnalate.
- Alcune dashboard e grafici GKE presentano lacune.
- Problemi di connettività nel networking a livello di pod.
Se noti uno di questi sintomi meno evidenti, il passaggio successivo è
verificare se si è verificato un evento CrashLoopBackOff
.
Confermare un evento CrashLoopBackOff
Per confermare e analizzare un evento CrashLoopBackOff
, raccogli prove dagli eventi Kubernetes e dai log delle app del container. Queste due fonti forniscono
visioni diverse, ma complementari, del problema:
- Gli eventi Kubernetes confermano che un pod sta generando errori irreversibili.
- I log delle app del container possono mostrare perché il processo all'interno del container non va a buon fine.
Per visualizzare queste informazioni, seleziona una delle seguenti opzioni:
Console
Per visualizzare gli eventi Kubernetes e i log delle app:
Nella console Trusted Cloud , vai alla pagina Workload.
Seleziona il workload che vuoi esaminare. La scheda Panoramica o Dettagli mostra ulteriori informazioni sullo stato del carico di lavoro.
Nella sezione Pod gestiti, fai clic sul nome del pod problematico.
Nella pagina dei dettagli del pod, esamina quanto segue:
- Per visualizzare i dettagli sugli eventi Kubernetes, vai alla scheda Eventi.
- Per visualizzare i log delle app del container, vai alla scheda Log. In questa pagina trovi messaggi di errore o stack trace specifici dell'app.
kubectl
Per visualizzare gli eventi Kubernetes e i log delle app:
Visualizza lo stato di tutti i pod in esecuzione nel cluster:
kubectl get pods
L'output è simile al seguente:
NAME READY STATUS RESTARTS AGE POD_NAME 0/1 CrashLoopBackOff 23 8d
Nell'output, esamina le seguenti colonne:
Ready
: controlla quanti container sono pronti. In questo esempio,0/1
indica che zero dei contenitori previsti si trova in uno stato pronto. Questo valore è un chiaro segnale di un problema.Status
: cerca i pod con statoCrashLoopBackOff
.Restarts
: un valore elevato indica che Kubernetes sta tentando ripetutamente di avviare il container senza riuscirci.
Dopo aver identificato un pod non riuscito, descrivilo per visualizzare gli eventi a livello di cluster correlati allo stato del pod:
kubectl describe pod POD_NAME -n NAMESPACE_NAME
Sostituisci quanto segue:
POD_NAME
: il nome del pod che hai identificato nell'output del comandokubectl get
.NAMESPACE_NAME
: lo spazio dei nomi del pod.
L'output è simile al seguente:
Containers: container-name: ... State: Waiting Reason: CrashLoopBackOff Last State: Terminated Reason: StartError Message: failed to create containerd task: failed to create shim task: context deadline exceeded: unknown Exit Code: 128 Started: Thu, 01 Jan 1970 00:00:00 +0000 Finished: Fri, 27 Jun 2025 16:20:03 +0000 Ready: False Restart Count: 3459 ... Conditions: Type Status PodReadyToStartContainers True Initialized True Ready False ContainersReady False PodScheduled True ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Failed 12m (x216 over 25h) kubelet Error: context deadline exceeded Warning Failed 8m34s (x216 over 25h) kubelet Error: context deadline exceeded Warning BackOff 4m24s (x3134 over 25h) kubelet Back-off restarting failed container container-name in pod failing-pod(11111111-2222-3333-4444-555555555555)
Nell'output, esamina i seguenti campi per verificare la presenza di un evento
CrashLoopBackOff
:State
: lo stato del container probabilmente mostraWaiting
con il motivoCrashLoopBackOff
.Last State
: lo stato del container terminato in precedenza. Cerca uno statoTerminated
ed esamina il codice di uscita per verificare se si è verificato un arresto anomalo (codice di uscita diverso da zero) o un'uscita riuscita imprevista (codice di uscita zero).Events
: azioni intraprese dal cluster stesso. Cerca messaggi relativi all'avvio del container, seguiti da errori del probe di attività o avvisi di backoff comeBack-off restarting failed container
.
Per scoprire di più sul motivo per cui il pod non è riuscito, visualizza i log dell'app:
kubectl logs POD_NAME --previous
Il flag
--previous
recupera i log dal container precedente terminato, in cui puoi trovare lo analisi dello stack o il messaggio di errore specifico che rivela la causa dell'arresto anomalo. Il container corrente potrebbe essere troppo nuovo per aver registrato log.Nell'output, cerca errori specifici dell'app che causerebbero l'uscita dal processo. Se utilizzi un'app personalizzata, gli sviluppatori che l'hanno scritta sono i più adatti a interpretare questi messaggi di errore. Se utilizzi un'app predefinita, queste app spesso forniscono le proprie istruzioni di debug.
Utilizzare il playbook interattivo per i pod con arresto anomalo in loop
Dopo aver confermato un evento CrashLoopBackOff
, inizia a risolvere i problemi con
il playbook interattivo:
Nella Trusted Cloud console, vai alla pagina Playbook interattivo GKE - Pod con arresto anomalo in loop.
Nell'elenco Cluster, seleziona il cluster di cui vuoi risolvere i problemi. Se non riesci a trovare il cluster, inserisci il nome del cluster nel campo Filtro.
Nell'elenco Spazio dei nomi, seleziona lo spazio dei nomi per cui vuoi risolvere i problemi. Se non riesci a trovare il tuo spazio dei nomi, inseriscilo nel campo Filtro.
Esamina ogni sezione per rispondere alle seguenti domande:
- Identifica gli errori dell'app: quali container sono in fase di riavvio?
- Analizza i problemi di memoria insufficiente: esiste un errore di configurazione o relativo all'app?
- Analizza le interruzioni del nodo: le interruzioni nella risorsa del nodo causano il riavvio del container?
- Esamina gli errori dei probe di attività: i probe di attività stanno arrestando i container?
- Correla eventi di modifica: cosa è successo durante il periodo in cui è iniziato l'arresto anomalo dei container?
(Facoltativo) Per ricevere notifiche sugli eventi futuri di
CrashLoopBackOff
, nella sezione Suggerimenti per la mitigazione futura, seleziona Crea un avviso.
Se il problema persiste dopo aver utilizzato il playbook, leggi il resto della guida
per ulteriori informazioni sulla risoluzione degli eventi CrashLoopBackOff
.
Risolvere un evento CrashLoopBackOff
Le sezioni seguenti ti aiutano a risolvere le cause più comuni degli eventi
CrashLoopBackOff
:
Risolvi l'esaurimento delle risorse
Un evento CrashLoopBackOff
è spesso causato da un problema di esaurimento della memoria. Puoi
confermare se questa è la causa se l'output di kubectl describe
mostra
quanto segue:
Last State: Terminated
Reason: OOMKilled
Per informazioni su come diagnosticare e risolvere gli eventi OOM, vedi Risolvere i problemi relativi agli eventi OOM.
Risolvi gli errori dei probe di attività
Un
probe di attività
è un controllo di integrità periodico eseguito da kubelet
. Se il probe non riesce a
un numero specificato di volte (il numero predefinito è tre), kubelet
riavvia
il container, causando potenzialmente un evento CrashLoopBackOff
se gli errori del probe
continuano.
Confermare se la causa è un probe di attività
Per verificare se gli errori del probe di attività attivano l'evento CrashLoopBackOff
, esegui una query nei log di kubelet
. Questi log spesso contengono messaggi espliciti
che indicano errori di sonda e riavvii successivi.
Nella console Trusted Cloud , vai alla pagina Esplora log.
Nel riquadro della query, filtra i riavvii correlati al probe di attività inserendo la seguente query:
resource.type="k8s_node" log_id("kubelet") jsonPayload.MESSAGE:"failed liveness probe, will be restarted" resource.labels.cluster_name="CLUSTER_NAME"
Sostituisci
CLUSTER_NAME
con il nome del cluster.Rivedi l'output. Se un errore del probe di attività è la causa degli eventi
CrashLoopBackOff
, la query restituisce messaggi di log simili ai seguenti:Container probe failed liveness probe, will be restarted
Dopo aver confermato che i probe di attività sono la causa dell'evento CrashLoopBackOff
, procedi alla risoluzione dei problemi relativi alle cause comuni:
- Esamina la configurazione del probe di attività.
- Controlla l'utilizzo di CPU e I/O del disco.
- Gestire deployment di grandi dimensioni.
- Errori temporanei dell'indirizzo.
- Indirizzare il consumo di risorse di Probe.
Rivedi la configurazione del probe di attività
Le sonde configurate in modo errato sono una causa frequente di eventi CrashLoopBackOff
. Controlla
le seguenti impostazioni nel manifest della sonda:
- Verifica il tipo di probe: la configurazione del probe deve corrispondere al modo in cui la tua app
segnala il suo stato. Ad esempio, se la tua app ha un URL di controllo di integrità (come
/healthz
), utilizza il tipo di probehttpGet
. Se il suo stato di integrità è determinato dall'esecuzione di un comando, utilizza il tipo di probeexec
. Ad esempio, per verificare se una porta di rete è aperta e in ascolto, utilizza il tipo di probetcpSocket
. - Controlla i parametri del probe:
- Percorso (per il tipo di probe
httpGet
): assicurati che il percorso HTTP sia corretto e che la tua app esegua i controlli di integrità. - Porta: verifica che la porta configurata nel probe sia effettivamente utilizzata ed esposta dall'app.
- Comando (per il tipo di probe
exec
): assicurati che il comando esista all'interno del contenitore, restituisca un codice di uscita0
in caso di esito positivo e venga completato entro il periodotimeoutSeconds
configurato. - Timeout: assicurati che il valore di
timeoutSeconds
sia sufficiente per consentire all'app di rispondere, soprattutto durante l'avvio o sotto carico. - Ritardo iniziale (
initialDelaySeconds
): verifica che il ritardo iniziale sia sufficiente per l'avvio dell'app prima dell'inizio dei probe.
- Percorso (per il tipo di probe
Per ulteriori informazioni, consulta la sezione Configurare i probe di attività, idoneità e avvio nella documentazione di Kubernetes.
Ispeziona l'utilizzo di CPU e I/O del disco
La contesa delle risorse comporta timeout del probe, che è una delle principali cause di errori del probe di attività. Per verificare se l'utilizzo delle risorse è la causa dell'errore del probe di attività, prova le seguenti soluzioni:
- Analizza l'utilizzo della CPU: monitora l'utilizzo della CPU del container interessato e del nodo su cui è in esecuzione durante gli intervalli di probe. Una metrica
fondamentale da monitorare è
kubernetes.io/container/cpu/core_usage_time
. L'utilizzo elevato della CPU sul container o sul nodo può impedire all'app di rispondere al probe in tempo. - Monitora l'I/O del disco: controlla le metriche di I/O del disco per il nodo. Puoi utilizzare la metrica
compute.googleapis.com/guest/disk/operation_time
per valutare la quantità di tempo dedicata alle operazioni su disco, che sono classificate in letture e scritture. Un I/O del disco elevato può rallentare notevolmente l'avvio del container, l'inizializzazione dell'app o le prestazioni complessive dell'app, causando timeout del probe.
Gestire deployment di grandi dimensioni
In scenari in cui viene eseguito il deployment di un numero elevato di pod contemporaneamente (ad esempio, da uno strumento CI/CD come ArgoCD), un improvviso aumento dei nuovi pod può sovraccaricare le risorse del cluster, causando l'esaurimento delle risorse del control plane. Questa mancanza di risorse ritarda l'avvio dell'app e può causare il ripetuto fallimento dei probe di attività prima che le app siano pronte.
Per risolvere il problema, prova le seguenti soluzioni:
- Implementa deployment scaglionati: implementa strategie per eseguire il deployment dei pod in batch o per un periodo di tempo più lungo per evitare di sovraccaricare le risorse dei nodi.
- Riconfigura o scala i nodi: se i deployment scaglionati non sono fattibili, valuta l'upgrade dei nodi con dischi più veloci o più grandi o con Persistent Volume Claims per gestire meglio l'aumento della domanda di I/O. Assicurati che lo scaling automatico del cluster sia configurato correttamente.
- Attendi e osserva: in alcuni casi, se il cluster non è gravemente sottoutilizzato, i workload potrebbero essere sottoposti a deployment dopo un ritardo significativo (a volte 30 minuti o più).
Errori temporanei dell'indirizzo
L'app potrebbe riscontrare errori temporanei o rallentamenti durante l'avvio o
l'inizializzazione, causando l'esito negativo iniziale del test. Se l'app alla fine
recupera, valuta la possibilità di aumentare i valori definiti nei campi initialDelaySeconds
o
failureThreshold
nel manifest del probe di attività.
Affronta il consumo di risorse del probe
In rari casi, l'esecuzione del probe di attività stesso potrebbe consumare risorse significative, il che potrebbe attivare vincoli di risorse che potrebbero portare alla terminazione del container a causa di un errore OOM. Assicurati che i comandi di probing siano leggeri. È più probabile che una sonda leggera venga eseguita in modo rapido e affidabile, il che le consente di segnalare con maggiore precisione lo stato effettivo della tua app.
Risolvi gli errori di configurazione delle app
Le configurazioni errate delle app causano molti eventi CrashLoopBackOff
. Per
capire perché la tua app si arresta, il primo passo è esaminare il codice di uscita.
Questo codice determina il percorso di risoluzione dei problemi:
- Il codice di uscita
0
indica un'uscita riuscita, il che è inatteso per un servizio a lunga esecuzione e indica problemi con il punto di ingresso del container o con la progettazione dell'app. - Un codice di uscita diverso da zero segnala un arresto anomalo dell'app, indirizzando l'attenzione verso errori di configurazione, problemi di dipendenza o bug nel codice.
Trovare il codice di uscita
Per trovare il codice di uscita della tua app:
Descrivi il pod:
kubectl describe pod POD_NAME -n NAMESPACE_NAME
Sostituisci quanto segue:
POD_NAME
: il nome del pod problematico.NAMESPACE_NAME
: lo spazio dei nomi del pod.
Nell'output, esamina il campo
Exit Code
che si trova nella sezioneLast State
per il contenitore pertinente. Se il codice di uscita è0
, consulta Risolvere i problemi relativi alle uscite riuscite (codice di uscita 0). Se il codice di uscita è un numero diverso da0
, consulta Risolvere i problemi relativi agli arresti anomali delle app (codice di uscita diverso da zero).
Risolvere i problemi relativi alle uscite riuscite (codice di uscita 0
)
Un codice di uscita 0
in genere indica che il processo del container è terminato correttamente.
Sebbene questo sia il risultato che vuoi per un job basato su attività, può segnalare un problema per un controller a esecuzione prolungata come un Deployment, uno StatefulSet o un ReplicaSet.
Questi controller funzionano per garantire che un pod sia sempre in esecuzione, quindi considerano qualsiasi uscita
come un errore da correggere. kubelet
impone questo comportamento rispettando
restartPolicy
del pod (che per impostazione predefinita è Always
), riavviando il
container anche dopo un'uscita riuscita. Questa azione crea un loop che
alla fine attiva lo stato CrashLoopBackOff
.
I motivi più comuni per le uscite riuscite impreviste sono i seguenti:
Il comando del container non avvia un processo permanente: un container rimane in esecuzione solo finché è in esecuzione il processo iniziale (
command
oentrypoint
). Se questo processo non è un servizio a esecuzione prolungata, il container esce non appena il comando viene completato. Ad esempio, un comando come["/bin/bash"]
viene chiuso immediatamente perché non ha script da eseguire. Per risolvere il problema, assicurati che il processo iniziale del container avvii un processo che viene eseguito continuamente.L'app worker esce quando una coda di lavoro è vuota: molte app worker sono progettate per controllare una coda per un'attività e uscire in modo pulito se la coda è vuota. Per risolvere il problema, puoi utilizzare un controller Job (progettato per le attività che vengono eseguite fino al completamento) o modificare la logica dell'app per eseguirla come servizio persistente.
Uscita dell'app a causa di una configurazione mancante o non valida: la tua app potrebbe uscire immediatamente se mancano le istruzioni di avvio richieste, ad esempio argomenti della riga di comando, variabili di ambiente o un file di configurazione critico.
Per risolvere il problema, esamina innanzitutto i log della tua app per individuare messaggi di errore specifici relativi al caricamento della configurazione o ai parametri mancanti. Quindi, verifica quanto segue:
- Argomenti o ambiente dell'app: assicurati che tutti gli argomenti della riga di comando e le variabili di ambiente necessari vengano passati correttamente al container come previsto dalla tua app.
- Presenza del file di configurazione: verifica che tutti i file di configurazione richiesti siano presenti nei percorsi previsti all'interno del container.
- Contenuti del file di configurazione: convalida i contenuti e il formato dei file di configurazione per verificare la presenza di errori di sintassi, campi obbligatori mancanti o valori errati.
Un esempio comune di questo problema si verifica quando un'app è configurata per leggere da un file montato con un volume
ConfigMap
. SeConfigMap
non è allegato, è vuoto o contiene chiavi con nomi errati, un'app progettata per uscire quando la sua configurazione è mancante potrebbe arrestarsi con un codice di uscita0
. In questi casi, verifica le seguenti impostazioni: - Il nome diConfigMap
nella definizione del volume del pod corrisponda al suo nome effettivo. - Le chiavi all'interno diConfigMap
corrispondono a ciò che la tua app si aspetta di trovare come nomi file nel volume montato.
Risolvere i problemi relativi agli arresti anomali delle app (codice di uscita diverso da zero)
Quando un container esce con un codice diverso da zero, Kubernetes lo riavvia. Se il problema
sottostante che ha causato l'errore è persistente, l'app si arresta di nuovo in modo anomalo e
il ciclo si ripete, culminando in uno stato CrashLoopBackOff
.
Il codice di uscita diverso da zero è un segnale chiaro che si è verificato un errore all'interno dell'app stessa, che indirizza i tuoi sforzi di debug verso il suo funzionamento interno e l'ambiente. I seguenti problemi spesso causano questa interruzione:
Errori di configurazione: un codice di uscita diverso da zero spesso indica problemi con la configurazione dell'app o con l'ambiente in cui viene eseguita. Controlla la tua app per questi problemi comuni:
- File di configurazione mancante: l'app potrebbe non essere in grado di trovare o accedere a un file di configurazione obbligatorio.
- Configurazione non valida: il file di configurazione potrebbe contenere errori di sintassi, valori errati o impostazioni incompatibili, causando l'arresto anomalo dell'app.
- Problemi di autorizzazioni: l'app potrebbe non disporre delle autorizzazioni necessarie per leggere o scrivere il file di configurazione.
- Variabili di ambiente: variabili di ambiente errate o mancanti possono causare il malfunzionamento o l'impossibilità di avviare l'app.
entrypoint
ocommand
non valido: il comando specificato nel campoentrypoint
ocommand
del contenitore potrebbe non essere corretto. Questo problema può verificarsi con immagini appena implementate in cui il percorso dell'eseguibile è errato o il file stesso non è presente nell'immagine del container. Questa configurazione errata spesso genera il codice di uscita128
.Aggiornamenti incontrollati delle immagini (tag
:latest
): se le immagini del tuo workload utilizzano il tag:latest
, i nuovi pod potrebbero estrarre una versione aggiornata dell'immagine che introduce modifiche che causano errori.Per garantire coerenza e riproducibilità, utilizza sempre tag immagine specifici e immutabili (ad esempio
v1.2.3
) o digest SHA (ad esempiosha256:45b23dee08...
) negli ambienti di produzione. Questa pratica contribuisce a garantire che i contenuti delle immagini vengano recuperati ogni volta.
Problemi di dipendenza: la tua app potrebbe arrestarsi in modo anomalo se non riesce a connettersi agli altri servizi da cui dipende o se l'autenticazione non riesce o se non dispone di autorizzazioni sufficienti per accedervi.
Servizio esterno non disponibile: l'app potrebbe dipendere da servizi esterni (ad esempio database o API) non raggiungibili a causa di problemi di connettività di rete o interruzioni del servizio. Per risolvere questo problema, connettiti al pod. Per saperne di più, consulta Debug dei pod in esecuzione nella documentazione di Kubernetes.
Dopo aver eseguito la connessione al pod, puoi eseguire comandi per verificare l'accesso a file, database o per testare la rete. Ad esempio, puoi utilizzare uno strumento come
curl
per provare a raggiungere l'URL di un servizio. Questa azione ti aiuta a determinare se un problema è causato da criteri di rete, DNS o dal servizio stesso.Errori di autenticazione: l'app potrebbe non essere in grado di autenticarsi con servizi esterni a causa di credenziali errate. Esamina i log del container per messaggi come
401 Unauthorized
(credenziali non valide) o403 Forbidden
(autorizzazioni insufficienti), che spesso indicano che il account di servizio per il pod non dispone dei ruoli IAM necessari per effettuare chiamate di servizio Trusted Cloud by S3NS esterne.Se utilizzi la federazione delle identità per i carichi di lavoro GKE, verifica che l'identificatore principale disponga delle autorizzazioni richieste per l'attività. Per ulteriori informazioni sulla concessione dei ruoli IAM alle entità utilizzando Workload Identity Federation per GKE, consulta Configurare l'autorizzazione e le entità. Devi anche verificare che l'utilizzo delle risorse di GKE Metadata Server non abbia superato i limiti.
Timeout: l'app potrebbe subire timeout durante l'attesa di risposte da servizi esterni, causando arresti anomali.
Errori specifici dell'app: se la configurazione e le dipendenze esterne sembrano corrette, l'errore potrebbe trovarsi nel codice dell'app. Controlla i log dell'app per questi errori interni comuni:
- Eccezioni non gestite: i log dell'app potrebbero contenere stack trace o messaggi di errore che indicano eccezioni non gestite o altri bug correlati al codice.
- Deadlock o livelock: l'app potrebbe essere bloccata in un deadlock, in cui più processi sono in attesa del completamento reciproco. In questo scenario, l'app potrebbe non uscire, ma smette di rispondere a tempo indeterminato.
- Conflitti di porta: l'app potrebbe non avviarsi se tenta di eseguire il binding a una porta già in uso da un altro processo.
- Librerie incompatibili: l'app potrebbe dipendere da librerie o dipendenze mancanti o incompatibili con l'ambiente di runtime.
Per trovare la causa principale, esamina i log del container per un messaggio di errore specifico o una analisi dello stack. Queste informazioni ti aiutano a decidere se correggere il codice dell'app, modificare i limiti delle risorse o correggere la configurazione dell'ambiente. Per maggiori informazioni sui log, consulta Informazioni sui log di GKE.
Passaggi successivi
Se non riesci a trovare una soluzione al tuo problema nella documentazione, consulta la sezione Richiedere assistenza per ulteriore aiuto, inclusi consigli sui seguenti argomenti:
- Aprire una richiesta di assistenza contattando l'assistenza clienti cloud.
- Ricevere assistenza dalla community
ponendo domande su StackOverflow e utilizzando il tag
google-kubernetes-engine
per cercare problemi simili. Puoi anche unirti al canale Slack#kubernetes-engine
per ulteriore assistenza della community. - Apertura di bug o richieste di funzionalità utilizzando lo strumento di monitoraggio dei problemi pubblico.