La diagnosi della causa principale dei problemi di Google Kubernetes Engine (GKE) spesso richiede l'ispezione dettagliata dello stato live, della configurazione e degli eventi delle risorse Kubernetes. Per andare oltre i sintomi superficiali, hai bisogno di strumenti per interrogare e interagire direttamente con il control plane del cluster.
Utilizza questa pagina per scoprire i comandi kubectl
essenziali per esaminare lo stato live del tuo cluster. L'apprendimento di questi comandi ti consente di raccogliere informazioni dettagliate direttamente dal control plane di Kubernetes, aiutandoti a capire perché si verifica un problema.
Queste informazioni sono importanti per gli amministratori e gli operatori della piattaforma che devono eseguire controlli di integrità approfonditi del cluster, gestire le risorse e risolvere i problemi dell'infrastruttura a un livello granulare. È essenziale anche per gli sviluppatori di applicazioni per il debug del comportamento delle applicazioni, l'ispezione dei log e degli eventi dei pod e la verifica dello stato esatto dei deployment nell'ambiente Kubernetes. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni degli utenti GKE.
Prima di iniziare
Prima di iniziare, esegui le seguenti operazioni:
- Installa kubectl.
Configura lo strumento a riga di comando
kubectl
per comunicare con il cluster:gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.LOCATION
: la posizione di Compute Engine del control plane del cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.
Rivedi le tue autorizzazioni. Per verificare se disponi delle autorizzazioni necessarie per eseguire i comandi
kubectl
, utilizza il comandokubectl auth can-i
. Ad esempio, per verificare se hai l'autorizzazione per eseguirekubectl get nodes
, esegui il comandokubectl auth can-i get nodes
.Se disponi delle autorizzazioni richieste, il comando restituisce
yes
; in caso contrario, il comando restituisceno
.Se non disponi dell'autorizzazione per eseguire un comando
kubectl
, potresti visualizzare un messaggio di errore simile al seguente:Error from server (Forbidden): pods "POD_NAME" is forbidden: User "USERNAME@DOMAIN.com" cannot list resource "pods" in API group "" in the namespace "default"
Se non disponi delle autorizzazioni richieste, chiedi all'amministratore del cluster di assegnarti i ruoli necessari.
Visualizzare una panoramica di ciò che è in esecuzione
Il comando kubectl get
ti aiuta a visualizzare una panoramica di ciò che sta accadendo nel tuo cluster. Utilizza i seguenti comandi per visualizzare lo stato di due dei componenti del cluster più importanti, ovvero nodi e pod:
Per verificare l'integrità dei nodi, visualizza i dettagli di tutti i nodi e i relativi stati:
kubectl get nodes
L'output è simile al seguente:
NAME STATUS ROLES AGE VERSION gke-cs-cluster-default-pool-8b8a777f-224a Ready <none> 4d23h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-egb2 Ready <none> 4d22h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-p5bn Ready <none> 4d22h v1.32.3-gke.1785003
Qualsiasi stato diverso da
Ready
richiede ulteriori indagini.Per verificare l'integrità dei pod, visualizza i dettagli di tutti i pod e i relativi stati:
kubectl get pods --all-namespaces
L'output è simile al seguente:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system netd-6nbsq 3/3 Running 0 4d23h kube-system netd-g7tpl 3/3 Running 0 4d23h
Qualsiasi stato diverso da
Running
richiede ulteriori indagini. Di seguito sono riportati alcuni stati comuni che potresti visualizzare:Running
: uno stato di esecuzione integro.Pending
: il pod è in attesa di essere pianificato su un nodo.CrashLoopBackOff
: i container nel pod vanno in arresto anomalo ripetutamente in un ciclo perché l'app si avvia, esce con un errore e viene riavviata da Kubernetes.ImagePullBackOff
: il pod non può eseguire il pull dell'immagine container.
I comandi precedenti sono solo due esempi di come puoi utilizzare il comando kubectl
get
. Puoi anche utilizzare il comando per saperne di più su molti tipi di risorse Kubernetes. Per un elenco completo delle risorse che puoi esplorare, consulta
kubectl get
nella documentazione di Kubernetes.
Scopri di più su risorse specifiche
Dopo aver identificato un problema, devi ottenere maggiori dettagli. Un esempio di
problema potrebbe essere un Pod che non ha lo stato Running
. Per ulteriori
dettagli, utilizza il comando kubectl describe
.
Ad esempio, per descrivere un pod specifico, esegui questo comando:
kubectl describe pod POD_NAME -n NAMESPACE_NAME
Sostituisci quanto segue:
POD_NAME
: il nome del pod che presenta problemi.NAMESPACE_NAME
: lo spazio dei nomi in cui si trova il pod. Se non sai qual è lo spazio dei nomi, esamina la colonnaNamespace
dell'output del comandokubectl get pods
.
L'output del comando kubectl describe
include informazioni dettagliate sulla
tua risorsa. Di seguito sono riportate alcune delle sezioni più utili da esaminare quando
risolvi i problemi di un Pod:
Status
: lo stato attuale del pod.Conditions
: lo stato generale e la preparazione del pod.Restart Count
: il numero di volte in cui i container nel pod sono stati riavviati. Numeri elevati possono essere motivo di preoccupazione.Events
: un log degli eventi importanti che si sono verificati per questo pod, come la pianificazione su un nodo, il pull dell'immagine del container e l'eventuale presenza di errori. La sezioneEvents
è spesso il luogo in cui puoi trovare gli indizi diretti sul motivo per cui un pod non funziona.
Come il comando kubectl get
, puoi utilizzare il comando kubectl describe
per
scoprire di più su più tipi di risorse. Per un elenco completo delle risorse
che puoi esplorare, consulta
kubectl describe
nella documentazione di Kubernetes.
Passaggi successivi
Leggi Eseguire l'analisi storica con Cloud Logging (la pagina successiva di questa serie).
Vedi questi concetti applicati nello scenario di esempio per la risoluzione dei problemi.
Per consigli sulla risoluzione di problemi specifici, consulta le guide alla risoluzione dei problemi di GKE.
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.