Ciao e benvenuto! Abbiamo raccolto per te i comandi più utilizzati in Kubernetes, tutti in un'unica cheat sheet kubectl pronta all'uso. La cheat sheet fornisce istruzioni passo passo su come gestire il tuo cluster Kubernetes con lo strumento a riga di comando kubectl.
Di seguito trovi un rapido riepilogo dei comandi più importanti. Vai alla cheat sheet completa qui sotto.
Context e configurazione del cluster:
- Elencare i context:
kubectl config get-contexts - Cambiare il context attivo:
kubectl config use-context <context-name> - Visualizzare i dettagli del cluster:
kubectl cluster-info - Verificare la versione:
kubectl version
Deployment e gestione delle applicazioni:
- Eseguire il deploy da un manifest:
kubectl apply -f <filename.yaml> - Eliminare risorse da un manifest:
kubectl delete -f <filename.yaml> - Scalare un deployment:
kubectl scale deployment <deployment-name> --replicas=<N> - Verificare lo stato del rollout di un deployment:
kubectl rollout status deployment/<deployment-name> - Eseguire il rollback di un deployment:
kubectl rollout undo deployment/<deployment-name>
Ispezione e debugging:
- Visualizzare tutte le risorse in tutti i namespace:
kubectl get all -A - Visualizzare stato e dettagli di un pod:
kubectl describe pod <pod-name> - Seguire i log di un pod:
kubectl logs -f <pod-name> - Eseguire comandi all'interno di un container:
kubectl exec -it <pod-name> -- <command> - Aprire una shell in un pod:
kubectl exec -it <pod-name> -- /bin/bash - Inoltrare una porta locale a un pod:
kubectl port-forward <pod-name> <local-port>:<container-port>
Consigli e flag per la produttività:
- Impostare un alias:
alias k=kubectl - Configurare l'autocompletamento:
source <(kubectl completion bash) - Filtrare le risorse per namespace: usa il flag
-n <namespace> - Testare le modifiche senza applicarle:
kubectl apply -f <filename.yaml> --dry-run=client - Visualizzare le risorse in YAML:
kubectl get pod <pod-name> -o yaml
Che cos'è kubectl?
Kubectl è lo strumento CLI di Kubernetes che ti permette di interagire con i tuoi cluster e di creare, gestire, modificare ed eliminare risorse con facilità. Comunica con l'API server di Kubernetes, così puoi monitorare e controllare le tue applicazioni.
Come funziona kubectl?

Kubectl funziona inviando comandi all'API server di Kubernetes, che esegue poi le operazioni richieste all'interno del cluster. Quando esegui un comando kubectl, ad esempio per distribuire un'applicazione o recuperare lo stato delle risorse, kubectl comunica con l'API server via HTTP, trasmettendo le tue istruzioni. L'API server elabora queste richieste, aggiorna lo stato del cluster in etcd (un archivio chiave-valore distribuito) e indica ad altri componenti, come lo scheduler o il controller manager, di eseguire le azioni necessarie per raggiungere lo stato desiderato. Questa interazione ti permette di gestire e monitorare in modo efficiente le risorse Kubernetes dalla riga di comando.
Nota: nelle versioni precedenti di Kubernetes, kubectl utilizzava i generatori per creare configurazioni di risorse in base a input specifici. Questi generatori permettevano agli utenti di specificare il tipo di risorsa da creare, come Pod, Deployment o Job, usando il flag --generator. Ad esempio, kubectl run nginx --image=nginx --generator=run-pod/v1 creava una risorsa Pod. Questo approccio consentiva agli utenti di automatizzare e scriptare la creazione di risorse con risultati prevedibili. Tuttavia, è importante sapere che il flag --generator è stato deprecato in Kubernetes v1.12 e rimosso nella v1.18. A partire dalla v1.18, kubectl run è stato semplificato per creare solo Pod e l'uso dei generatori è stato sostituito da comandi più espliciti e dichiarativi come kubectl create e kubectl apply
Ora, iniziamo:
Configurare kubectl: versione, informazioni sul cluster e autocompletamento
Il primo passo dopo l'installazione di kubectl è verificare che sia installato correttamente e che possa comunicare con il cluster. Il comando seguente mostra la versione del client e, se un cluster è configurato, mostra anche la versione del server:
kubectl versionPer confermare che kubectl sia connesso al cluster corretto, usa:
kubectl cluster-infoQuesto comando mostra gli indirizzi del control plane di Kubernetes e dei servizi principali. Se il comando restituisce un errore, verifica che il file kubeconfig sia configurato correttamente e che il cluster di destinazione sia raggiungibile.
Puoi anche ispezionare la configurazione corrente e i context disponibili con:
kubectl config get-contextskubectl config current-contextSe lavori con più cluster, passare dall'uno all'altro è semplicissimo:
kubectl config use-context <context-name>Sostituendo <context-name> con il context desiderato, il cluster attivo viene aggiornato per tutti i comandi kubectl successivi.
Per migliorare la produttività, abilita l'autocompletamento della shell. In questo modo la shell completa automaticamente comandi, nomi delle risorse, namespace e altri argomenti quando premi il tasto Tab. Per Bash, esegui:
echo 'source <(kubectl completion bash)' >> ~/.bashrcsource ~/.bashrcPer Zsh, usa:
echo 'source <(kubectl completion zsh)' >> ~/.zshrcsource ~/.zshrcUna scorciatoia utile è creare un alias per kubectl e abilitare l'autocompletamento anche per quest'ultimo:
alias k=kubectlcomplete -o default -F __start_kubectl kSe usi Zsh, sostituisci l'ultima riga con:
compdef __start_kubectl kCon verifica della versione, connettività al cluster, gestione dei context e autocompletamento configurati, il tuo ambiente è pronto per l'amministrazione quotidiana di Kubernetes.
La cheat sheet kubectl definitiva

Flag opzionali
Kubectl offre flag opzionali che migliorano l'output dei comandi e la gestione delle risorse. Ad esempio:
Formati di output:
Output JSON:
Puoi usare il flag -o=json per formattare l'output del comando come JSON.
kubectl get pods -o=jsonOutput YAML:
Puoi usare il flag -o=yaml per formattare l'output del comando come YAML.
kubectl get pods -o=yamlOutput esteso (wide):
L'opzione -o=wide fornisce un output testuale dettagliato (ad esempio, mostra il nome del nodo per i pod).
kubectl get pods -o=widePer output più personalizzati, kubectl offre il flag --custom-columns, che permette di definire le colonne specifiche da visualizzare.
Ad esempio, per elencare i pod con i loro nomi e i nodi su cui sono in esecuzione:
kubectl get pods -o=custom-columns="POD NAME:.metadata.name,NODE:.spec.nodeName"Questo comando produrrà il seguente output:
POD NAME NODEnginx-deployment-1 node-1nginx-deployment-2 node-2Specifica del namespace:
Per impostazione predefinita, i comandi kubectl operano nel namespace definito dal context corrente. Per operare su un namespace specifico, puoi usare il flag -n o --namespace:
kubectl get pods -n <namespace_name>Per visualizzare le risorse in tutti i namespace si usa il flag -A o --all-namespaces:
kubectl get pods -AE per impostare un namespace predefinito per il context corrente:
kubectl config set-context --current --namespace=ns_nameInput da file:
Il flag -f serve a specificare un nome di file, una directory o un URL durante la creazione di una risorsa.
kubectl create -f ./file_nameFiltro per label:
Puoi usare il flag -l per filtrare le risorse in base a label specifiche.
kubectl get pods -l name=label_nameGuida:
Per visualizzare la guida dei comandi kubectl, usa il flag -h.
kubectl -hModalità watch:
Puoi monitorare continuamente le modifiche alle risorse con il flag --watch (o -w):
kubectl get pods -wOrdinamento dell'output:
Puoi ordinare l'output in base a un campo specifico usando il flag --sort-by:
kubectl get pods --sort-by=.metadata.nameUsare kubectl con gli alias
Lavorare con kubectl significa digitare comandi lunghi, con conseguente perdita di tempo e rischio di errori. Per migliorare l'efficienza, molti sviluppatori creano alias per i comandi usati più di frequente.
Configurare un alias di base
alias k=kubectlecho 'alias k=kubectl' >> ~/.bashrcIn questo modo puoi usare k al posto di kubectl.
Puoi usare il repository kubectl-aliases, che offre centinaia di alias predefiniti per eseguire i comandi più rapidamente.
Gestione del cluster, context e configurazione
Gestire il cluster significa configurarlo, visualizzarlo e modificarlo.
| Comando | Descrizione |
|---|---|
kubectl cluster-info |
Mostra gli endpoint e le informazioni di base sul tuo cluster Kubernetes. |
kubectl config get-contexts |
Elenca tutti i context definiti nel file kubeconfig. |
kubectl config current-context |
Mostra il context attualmente attivo. |
kubectl config use-context <context> |
Imposta come attivo il context specificato. |
kubectl config delete-context <context> |
Rimuove un context dal file kubeconfig. |
kubectl api-versions |
Elenca tutte le versioni API disponibili nel cluster. |
kubectl api-resources |
Elenca tutti i tipi di risorsa disponibili nel cluster, con dettagli su gruppi API e namespace. |
kubectl config view |
Mostra i dettagli di configurazione del file kubeconfig (cluster, context, impostazioni utente). |
kubectl version |
Stampa le informazioni di versione sia del client kubectl sia del server Kubernetes. |
Gestione dei pod
Shortcode: po
Un Pod è l'unità più piccola di Kubernetes e rappresenta una singola istanza di un processo in esecuzione nel cluster. Può contenere uno o più container che condividono storage e risorse di rete.
| Comando | Descrizione |
|---|---|
kubectl get pods |
Elenca tutti i pod nel namespace corrente. |
kubectl describe pod <pod-name> |
Fornisce informazioni dettagliate sul pod specificato, inclusi stato, eventi e dettagli dei container. |
kubectl exec -it <pod-name> <command> |
Esegue il comando indicato all'interno del pod specificato in modalità interattiva (i flag -it abilitano l'accesso interattivo al terminale). |
kubectl delete pod <pod-name> |
Elimina il pod specificato dal cluster. |
kubectl run <pod-name> --image=<image_name> |
Crea ed esegue un pod con l'immagine specificata. |
kubectl get pod -n <namespace_name> |
Elenca tutti i pod nel namespace specificato. |
kubectl exec <pod-name> -c <container-name> <command> |
Esegue un comando all'interno di un container specifico di un pod. |
kubectl top pod |
Mostra l'utilizzo delle risorse (come CPU e memoria) dei pod. |
kubectl annotate pod <pod-name> <annotation> |
Aggiunge o aggiorna un'annotazione sul pod specificato. |
kubectl get pods --field-selector=status.phase=Running |
Elenca i pod attualmente in fase Running filtrando in base allo stato del pod. |
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' |
Ordina l'elenco dei pod in base al numero di riavvii del primo container di ciascun pod. |
Per i ReplicaSet
Shortcode: rs
Un ReplicaSet garantisce che sia in esecuzione il numero di repliche di pod specificato. La differenza principale è che i ReplicaSet supportano selettori di label basati su insiemi.
| Comando | Descrizione |
|---|---|
kubectl get rs |
Elenca tutti i ReplicaSet nel namespace corrente. |
kubectl get rs <replicaset_name> -o yaml |
Mostra la configurazione del ReplicaSet specificato in formato YAML. |
kubectl get rs <replicaset_name> -o json |
Mostra la configurazione del ReplicaSet specificato in formato JSON. |
kubectl describe rs <rs_name> |
Fornisce informazioni dettagliate sul ReplicaSet specificato. |
kubectl get rs --namespace=<ns_name> |
Elenca tutti i ReplicaSet nel namespace specificato. |
kubectl delete rs <rs_name> --cascade=orphan |
Elimina il ReplicaSet specificato lasciando in esecuzione i pod che gestisce (i pod diventano orfani). |
kubectl delete rs <rs_name> |
Elimina il ReplicaSet specificato insieme a tutti i pod che gestisce. |
kubectl scale rs <rs_name> --replicas=<count> |
Regola (scala) il numero di pod gestiti dal ReplicaSet specificato portandolo al valore indicato. |
kubectl edit rs <rs_name> |
Apre la configurazione del ReplicaSet nel tuo editor predefinito, permettendoti di apportare modifiche in tempo reale. |
kubectl replace -f <rs_file.yaml> |
Sostituisce la configurazione esistente del ReplicaSet con quella fornita nel file YAML. |
Per i DaemonSet
Shortcode: ds
Un DaemonSet garantisce che un pod specifico sia in esecuzione su tutti i nodi (o su alcuni) del cluster. È utile per attività come l'esecuzione di un agente di monitoraggio su ogni nodo.
| Comando | Descrizione |
|---|---|
kubectl get daemonset |
Elenca tutti i DaemonSet nel namespace corrente. |
kubectl describe daemonset <ds_name> |
Fornisce informazioni dettagliate su un DaemonSet specifico. |
kubectl get daemonset <daemonset_name> -o yaml |
Mostra la configurazione del DaemonSet specificato in formato YAML. |
kubectl get daemonset <ds_name> -o json |
Mostra la configurazione del DaemonSet specificato in formato JSON. |
kubectl delete daemonset <ds_name> |
Elimina il DaemonSet specificato dal cluster. |
kubectl label daemonset <ds_name> <key>=<value> |
Aggiunge o aggiorna una label sul DaemonSet specificato. |
kubectl annotate daemonset <ds_name> <key>=<value> |
Aggiunge o aggiorna un'annotazione sul DaemonSet specificato. |
kubectl rollout status daemonset <ds_name> |
Verifica lo stato del rollout di un DaemonSet. |
kubectl rollout history daemonset <ds_name> |
Mostra la cronologia dei rollout di un DaemonSet. |
Per gli StatefulSet
Shortcode: sts
Gli StatefulSet gestiscono il deployment e lo scaling dei pod, garantendo a ciascuno un'identità univoca e stabile e uno storage persistente. Questo è importante per le applicazioni stateful.
| Comando | Descrizione |
|---|---|
kubectl get statefulset |
Elenca tutti gli StatefulSet nel namespace corrente. |
kubectl describe statefulset <statefulset_name> |
Fornisce informazioni dettagliate sullo StatefulSet specificato. |
kubectl get statefulset <sts_name> -o yaml |
Mostra la configurazione dello StatefulSet specificato in formato YAML. |
kubectl get statefulset <sts_name> -o json |
Mostra la configurazione dello StatefulSet specificato in formato JSON. |
kubectl edit statefulset <sts_name> |
Apre la configurazione dello StatefulSet specificato nel tuo editor di testo predefinito, permettendoti di apportare modifiche in tempo reale. |
kubectl scale statefulset <sts_name> --replicas=<number> |
Regola il numero di repliche di pod gestite dallo StatefulSet specificato portandolo al valore indicato. |
kubectl rollout status statefulset <statefulset_name> |
Verifica e mostra lo stato del rollout dello StatefulSet specificato. |
Per i namespace
Shortcode: ns
I namespace offrono un modo per suddividere le risorse del cluster tra più utenti o applicazioni.
| Comando | Descrizione |
|---|---|
kubectl get namespace |
Elenca tutti i namespace del cluster (i namespace del context corrente). |
kubectl create namespace <namespace_name> |
Crea un nuovo namespace con il nome specificato. |
kubectl describe namespace <namespace_name> |
Fornisce informazioni dettagliate sul namespace specificato. |
kubectl edit namespace <namespace_name> |
Apre la configurazione del namespace specificato nel tuo editor di testo predefinito per apportare modifiche in tempo reale. |
kubectl delete namespace <namespace_name> |
Elimina il namespace specificato dal cluster insieme a tutte le risorse che contiene. |
Per i Service
Shortcode: svc
Un Service definisce un insieme logico di pod e una policy per accedervi. Abilita la comunicazione tra le diverse parti della tua applicazione e può esporre l'applicazione al traffico esterno.
| Comando | Descrizione |
|---|---|
kubectl get services |
Elenca tutti i service nel namespace corrente |
kubectl create service <svc-type> <svc-name> --tcp=<port> |
Crea un nuovo service del tipo specificato (ad esempio clusterip, nodeport o loadbalancer) con il nome indicato, mappando TCP su una determinata porta |
kubectl edit service <svc-name> |
Apre un editor per modificare la configurazione del service specificato |
kubectl describe service <svc-name> |
Fornisce informazioni dettagliate sul service specificato |
kubectl delete service <svc-name> |
Elimina il service specificato dal cluster |
kubectl get endpoints <svc-name> |
Elenca gli endpoint (ovvero gli indirizzi IP dei pod) che supportano il service specificato |
kubectl expose deployment [deploy_name] |
Crea un service che espone il deployment specificato; le risorse esponibili includono pod (po), service (svc) e replicaset (rs) |
Per i Service Account
Shortcode: sa
Un ServiceAccount fornisce un'identità ai processi in esecuzione in un pod, consentendo loro di interagire in modo sicuro con l'API di Kubernetes.
| Comando | Descrizione |
|---|---|
kubectl get serviceaccounts |
Elenca tutti i service account nel namespace corrente |
kubectl describe serviceaccount <sa-name> |
Mostra informazioni dettagliate sul service account specificato |
kubectl replace -f <sa.yaml> |
Sostituisce (aggiorna) un service account con una nuova configurazione |
kubectl delete serviceaccount <sa_name> |
Elimina il service account specificato dal cluster. |
Per i Deployment
Shortcode: deploy
Un Deployment fornisce aggiornamenti dichiarativi per pod e ReplicaSet. Puoi definire lo stato desiderato della tua applicazione e il controller del Deployment porta lo stato effettivo verso quello desiderato a un ritmo controllato.
| Comando | Descrizione |
|---|---|
kubectl get deployment |
Elenca tutti i deployment nel namespace corrente. |
kubectl describe deployment <deployment_name> |
Mostra informazioni dettagliate sul deployment specificato |
kubectl create deployment <deployment-name> --image=<img-name> |
Crea un nuovo deployment denominato <deployment-name> usando l'immagine container specificata |
kubectl edit deployment <deployment_name> |
Apre la configurazione del deployment nel tuo editor di testo predefinito per modifiche in tempo reale |
kubectl scale deployment <deployment-name> --replicas=<replica-count> |
Regola il numero di repliche di pod gestite dal deployment portandolo al valore specificato. |
kubectl set image deployment/<deployment-name> <container-name>=<new-image-name> |
Aggiorna l'immagine di un container specifico all'interno del deployment |
kubectl rollout status deployment/<deployment-name> |
Mostra lo stato attuale del rollout del deployment |
kubectl rollout pause deployment/<deployment-name> |
Mette in pausa il processo di rollout, impedendo ulteriori aggiornamenti fino alla ripresa |
kubectl rollout resume deployment/<deployment-name> |
Riprende un rollout del deployment in pausa |
kubectl rollout undo deployment/<deployment-name> |
Ripristina il deployment alla revisione precedente |
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number> |
Esegue il rollback del deployment a un numero di revisione specifico |
kubectl delete deployment <deployment-name> |
Elimina il deployment specificato insieme ai pod che gestisce |
Per Job e CronJob
Shortcode: job, cj
Un Job esegue uno o più pod finché un'attività non viene completata con successo. Un CronJob crea Job in base a una pianificazione, risultando utile per backup, report e altre attività ricorrenti.
| Comando | Descrizione |
|---|---|
kubectl get jobs |
Elenca tutti i Job nel namespace corrente. |
kubectl describe job <job-name> |
Mostra informazioni dettagliate sul Job specificato. |
kubectl create job <job-name> --image=<image-name> |
Crea un Job che esegue l'immagine container specificata. |
kubectl delete job <job-name> |
Elimina il Job specificato. |
kubectl get cronjobs |
Elenca tutti i CronJob nel namespace corrente. |
kubectl describe cronjob <cronjob-name> |
Mostra informazioni dettagliate sul CronJob specificato. |
kubectl create cronjob <cronjob-name> --image=<image-name> --schedule="<cron-expression>" |
Crea un CronJob con la pianificazione specificata. |
kubectl create job --from=cronjob/<cronjob-name> <job-name> |
Crea un Job una tantum a partire da un CronJob esistente. |
kubectl patch cronjob <cronjob-name> -p '{"spec":{"suspend":true}}' |
Sospende le esecuzioni future del CronJob. |
kubectl delete cronjob <cronjob-name> |
Elimina il CronJob specificato. |
Per gli Horizontal Pod Autoscaler
Shortcode: hpa
Un Horizontal Pod Autoscaler (HPA) regola automaticamente il numero di repliche di pod in base a metriche come l'utilizzo di CPU o memoria.
| Comando | Descrizione |
|---|---|
kubectl get hpa |
Elenca tutti gli Horizontal Pod Autoscaler. |
kubectl describe hpa <hpa-name> |
Mostra informazioni dettagliate sull'HPA specificato. |
kubectl autoscale deployment <deployment-name> --cpu-percent=<target> --min=<min> --max=<max> |
Crea un HPA per il deployment specificato. |
kubectl edit hpa <hpa-name> |
Apre la configurazione dell'HPA per modifiche in tempo reale. |
kubectl delete hpa <hpa-name> |
Elimina l'HPA specificato. |
kubectl get hpa -w |
Osserva in tempo reale le metriche e gli eventi di scaling dell'HPA. |
kubectl top pods |
Mostra l'utilizzo delle risorse dei pod rilevato dal Metrics Server. |
kubectl top nodes |
Mostra l'utilizzo di CPU e memoria dei nodi. |
Per RBAC e verifica dei permessi
Il Role-Based Access Control (RBAC) controlla quali utenti e service account possono accedere alle risorse Kubernetes.
| Comando | Descrizione |
|---|---|
kubectl get roles |
Elenca tutti i Role nel namespace corrente. |
kubectl get rolebindings |
Elenca tutti i RoleBinding nel namespace corrente. |
kubectl get clusterroles |
Elenca tutti i ClusterRole. |
kubectl get clusterrolebindings |
Elenca tutti i ClusterRoleBinding. |
kubectl describe role <role-name> |
Mostra informazioni dettagliate sul Role specificato. |
kubectl describe clusterrole <clusterrole-name> |
Mostra informazioni dettagliate sul ClusterRole specificato. |
kubectl auth can-i <verb> <resource> |
Verifica se l'utente corrente può eseguire un'azione su una risorsa. |
kubectl auth can-i <verb> <resource> --as=<user> |
Verifica i permessi di un altro utente. |
kubectl auth can-i --list |
Elenca tutti i permessi disponibili per l'utente corrente. |
Per le risorse Ingress
Shortcode: ing
Un Ingress gestisce l'accesso HTTP e HTTPS esterno ai service di un cluster Kubernetes. In genere richiede un Ingress controller.
| Comando | Descrizione |
|---|---|
kubectl get ingress |
Elenca tutte le risorse Ingress nel namespace corrente. |
kubectl describe ingress <ingress-name> |
Mostra informazioni dettagliate sull'Ingress specificato. |
kubectl create ingress <ingress-name> --rule="<host>/<path>=<service>:<port>" |
Crea un Ingress con una regola di routing. |
kubectl edit ingress <ingress-name> |
Apre la configurazione dell'Ingress per modifiche in tempo reale. |
kubectl delete ingress <ingress-name> |
Elimina l'Ingress specificato. |
kubectl get ingress -A |
Elenca le risorse Ingress in tutti i namespace. |
kubectl get ingress <ingress-name> -o yaml |
Mostra la configurazione dell'Ingress in formato YAML. |
Per il debugging avanzato
Questi comandi aiutano a risolvere problemi di applicazioni, rete e risorse in un cluster Kubernetes.
| Comando | Descrizione |
|---|---|
kubectl logs <pod-name> |
Mostra i log del pod specificato. |
kubectl logs <pod-name> -c <container-name> |
Mostra i log di un container specifico in un pod multi-container. |
kubectl logs -f <pod-name> |
Mostra i log del pod specificato in streaming. |
kubectl logs <pod-name> --previous |
Mostra i log dell'istanza precedente di un container andato in crash. |
kubectl exec -it <pod-name> -- /bin/sh |
Apre una shell interattiva all'interno di un container in esecuzione. |
kubectl port-forward pod/<pod-name> <local-port>:<pod-port> |
Inoltra una porta locale a un pod per il debugging. |
kubectl debug <pod-name> -it --image=busybox |
Crea un container di debug effimero collegato al pod specificato. |
kubectl get events --sort-by=.metadata.creationTimestamp |
Elenca gli eventi del cluster in ordine cronologico. |
kubectl describe node <node-name> |
Mostra le condizioni del nodo, le risorse allocate e gli eventi recenti. |
kubectl cp <pod-name>:<remote-path> <local-path> |
Copia file da un pod alla macchina locale. |
Per gli eventi
Shortcode: ev
Gli eventi sono registrazioni di ciò che è accaduto nel cluster, come creazioni ed eliminazioni di pod o errori.
| Comando | Descrizione |
|---|---|
kubectl get events |
Elenca tutti gli eventi nel namespace corrente |
kubectl get events --field-selector type!=Normal |
Mostra gli eventi che non sono di tipo Normal |
kubectl get events --field-selector type=Warning |
Filtra e mostra solo gli eventi di tipo Warning |
kubectl get events -w |
Osserva i nuovi eventi in tempo reale |
kubectl get events --field-selector involvedObject.name=<object_name> |
Mostra gli eventi relativi a un oggetto specifico, come un pod o un nodo |
Log
I log sono l'output delle applicazioni in esecuzione e dei componenti di sistema.
| Comando | Descrizione |
|---|---|
kubectl logs <pod_name> |
Recupera e mostra i log del container principale del pod specificato |
kubectl logs -f <pod_name> |
Mostra in tempo reale i log del pod specificato |
kubectl logs --since=6h <pod_name> |
Mostra i log del pod specificato generati nelle ultime 6 ore |
kubectl logs --tail=50 <pod_name> |
Mostra le ultime 50 righe di log del pod specificato |
kubectl logs -f <pod_name> -c <container_name> |
Mostra in tempo reale i log di un container specifico all'interno di un pod |
kubectl logs <pod_name> > podfile.log |
Salva i log di un pod in un file denominato podfile.log |
kubectl logs --previous <pod_name> |
Mostra i log dell'istanza precedente di un container nel pod specificato |
Per Secret e ConfigMap
Shortcode per le ConfigMap: cm
I Secret memorizzano informazioni sensibili come password o chiavi, mentre le ConfigMap contengono dati di configurazione non sensibili. Entrambi permettono di disaccoppiare gli artefatti di configurazione dal contenuto delle immagini, mantenendo le applicazioni portabili.
| Comando | Descrizione |
|---|---|
kubectl get secrets |
Elenca tutti i secret nel namespace corrente |
kubectl get configmaps |
Elenca tutte le ConfigMap nel namespace corrente |
kubectl describe secret <secret-name> |
Fornisce informazioni dettagliate sul secret specificato |
kubectl delete secret <secret-name> |
Elimina il secret specificato dal cluster |
kubectl describe configmap <configmap-name> |
Fornisce informazioni dettagliate sulla ConfigMap specificata |
kubectl create configmap <config-map-name> --from-file=<path-to-file> |
Crea una nuova ConfigMap con il nome indicato usando il contenuto del file specificato |
kubectl create secret <secret-type> <secret-name> --from-literal=key=value |
Crea un nuovo secret del tipo specificato usando una coppia chiave-valore |
Per la gestione dei nodi
Shortcode: no
Un Node è una macchina worker in Kubernetes.
| Comando | Descrizione |
|---|---|
kubectl get nodes |
Elenca tutti i nodi del cluster |
kubectl describe node <node-name> |
Fornisce informazioni dettagliate sul nodo specificato |
kubectl drain <node-name> |
Prepara il nodo per la manutenzione espellendo tutti i pod e contrassegnandolo come non schedulabile |
kubectl uncordon <node-name> |
Contrassegna come nuovamente schedulabile un nodo precedentemente isolato (non schedulabile), consentendo la pianificazione di nuovi pod su di esso |
kubectl label node <node_name> <key>=<value> |
Aggiunge o aggiorna una label sul nodo specificato |
kubectl cordon <node_name> |
Contrassegna il nodo specificato come non schedulabile |
kubectl taint node <node_name> <key>=<value>:<taint-effect> |
Applica un taint al nodo specificato |
kubectl top node <node_name> |
Mostra le metriche di utilizzo delle risorse (come CPU e memoria) del nodo specificato |
kubectl annotate node <node_name> <key>=<value> |
Aggiunge o aggiorna un'annotazione sul nodo specificato |
Per lo storage (PV, PVC)
Shortcode per i Persistent Volume: pv
Shortcode per le Persistent Volume Claim: pvc
I PersistentVolume sono risorse di storage nel cluster, mentre le PersistentVolumeClaim sono richieste di storage da parte degli utenti.
| Comando | Descrizione |
|---|---|
kubectl get pv |
Elenca tutti i Persistent Volume del cluster |
kubectl describe pv <pv-name> |
Fornisce informazioni dettagliate su un Persistent Volume specifico |
kubectl get pvc |
Elenca tutte le Persistent Volume Claim nel namespace corrente |
kubectl describe pvc <pvc-name> |
Mostra informazioni dettagliate su una Persistent Volume Claim specifica |
Per copiare file e directory
Puoi trasferire file tra il tuo sistema locale e il container di un pod, utile per il debugging o il backup dei dati.
| Comando | Descrizione |
|---|---|
kubectl cp <local-path> <namespace>/<pod-name>:<container-path> |
Copia un file o una directory dalla tua macchina locale a un container nel pod e nel namespace specificati. |
kubectl cp <source-pod-name>:<source-container-path> <local-path> -n <namespace> |
Copia un file o una directory da un container all'interno di un pod (nel namespace indicato) alla tua macchina locale. |
kubectl cp <local-path> <destination-namespace>/<destination-pod-name>:<destination-container-path> |
Copia un file o una directory dalla tua macchina locale al pod e al namespace di destinazione. |
Per la verbosità dell'output e il debugging
La verbosità indica il livello di dettaglio incluso nei log generati da componenti come kubectl e kubelet. Puoi regolare la verbosità dei comandi kubectl.
| Comando | Descrizione |
|---|---|
kubectl get <resource-type> --v=<verbosity-level> |
È la forma generale per impostare il livello di verbosità. Indica a kubectl quanto output di debug includere nell'esecuzione del comando sul tipo di risorsa specificato. |
kubectl get <resource-type> --v=0 |
Esegue il comando con un output di debug minimo (il livello predefinito). |
kubectl get <resource-type> --v=7 |
Fornisce un livello di verbosità più alto, con informazioni di debug aggiuntive, incluse le intestazioni delle richieste HTTPS inviate dal client. |
kubectl get <resource-type> --v=8 |
Aumenta ulteriormente la verbosità. Al livello 8 vengono mostrati anche i contenuti delle richieste e delle risposte HTTP (dati del body). |
FAQ
Che cos'è kubectl? kubectl è lo strumento a riga di comando di Kubernetes. Invia i tuoi comandi all'API server di Kubernetes, che esegue la richiesta nel cluster, permettendoti di creare, gestire, modificare ed eliminare risorse e di monitorare le tue applicazioni.
Come passo da un cluster all'altro con kubectl?
Esegui kubectl config get-contexts per elencare i context nel file kubeconfig, poi esegui kubectl config use-context <context-name> per attivarne uno. Tutti i comandi kubectl successivi verranno eseguiti su quel cluster.
Come elenco i pod in tutti i namespace?
Aggiungi il flag -A (o --all-namespaces), ad esempio kubectl get pods -A. Per limitarti a un singolo namespace, usa invece -n <namespace_name>.
Come visualizzo i log di un container andato in crash?
Esegui kubectl logs <pod-name> --previous per vedere i log dell'istanza precedente del container. Aggiungi -c <container-name> se il pod ha più di un container.
Come eseguo il rollback di un deployment?
Esegui kubectl rollout undo deployment/<deployment-name> per tornare alla revisione precedente. Per scegliere una revisione specifica, aggiungi --to-revision=<revision-number>.
Come configuro un alias e l'autocompletamento per kubectl?
Esegui alias k=kubectl per usare k al posto di kubectl e aggiungilo al tuo ~/.bashrc per renderlo permanente. Per l'autocompletamento in Bash, aggiungi source <(kubectl completion bash) a ~/.bashrc. La cheat sheet copre anche Zsh.
Riduci i costi del cloud fino al 50% con PerfectScale
PerfectScale è uno strumento potente progettato per integrarsi perfettamente con Kubernetes. Integrando PerfectScale nel tuo ambiente Kubernetes, puoi semplificare e ottimizzare l'orchestrazione dei tuoi container. Questa integrazione aumenta l'efficienza nella gestione dei cluster, permettendoti di allocare le risorse in modo più efficace, ridurre i costi operativi e migliorare la stabilità e la resilienza complessive delle tue applicazioni. Gli insight basati sull'AI di PerfectScale offrono una visibilità completa sulle prestazioni del tuo sistema, consentendo interventi proattivi per rispondere a esigenze dinamiche. In questo modo puoi garantire prestazioni ottimali riducendo al contempo i costi fino al 50% grazie ad azioni autonome e basate sui dati che ottimizzano continuamente ogni livello del tuo stack Kubernetes. Per toccare con mano i vantaggi di PerfectScale, prenota una demo e inizia la prova gratuita oggi stesso!