PerfectScalePerfectScale

PerfectScale

Cheat sheet kubectl : maîtrisez clusters, pods, deployments et plus encore

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Tania Duggal
By Tania Duggal
Oct 13, 202625 min read

Bonjour et bienvenue ! Nous avons rassemblé pour vous les commandes Kubernetes les plus utilisées, réunies dans une cheat sheet kubectl prête à l'emploi. Elle vous guide pas à pas dans la gestion de votre cluster Kubernetes avec l'outil en ligne de commande kubectl.

Voici un résumé rapide des commandes essentielles. Retrouvez la cheat sheet complète ci-dessous.

Contexte et configuration du cluster :

  • Lister les contextes : kubectl config get-contexts
  • Changer de contexte actif : kubectl config use-context <context-name>
  • Afficher les détails du cluster : kubectl cluster-info
  • Vérifier la version : kubectl version

Deployments et gestion des applications :

  • Déployer depuis un manifeste : kubectl apply -f <filename.yaml>
  • Supprimer les ressources d'un manifeste : kubectl delete -f <filename.yaml>
  • Mettre à l'échelle un deployment : kubectl scale deployment <deployment-name> --replicas=<N>
  • Vérifier le statut du rollout d'un deployment : kubectl rollout status deployment/<deployment-name>
  • Revenir à la version précédente d'un deployment : kubectl rollout undo deployment/<deployment-name>

Inspection et débogage :

  • Afficher toutes les ressources de tous les namespaces : kubectl get all -A
  • Afficher le statut et les détails d'un pod : kubectl describe pod <pod-name>
  • Suivre les logs d'un pod : kubectl logs -f <pod-name>
  • Exécuter des commandes dans un conteneur : kubectl exec -it <pod-name> -- <command>
  • Ouvrir un shell dans un pod : kubectl exec -it <pod-name> -- /bin/bash
  • Rediriger un port local vers un pod : kubectl port-forward <pod-name> <local-port>:<container-port>

Astuces de productivité et flags :

  • Définir un alias : alias k=kubectl
  • Activer l'autocomplétion : source <(kubectl completion bash)
  • Filtrer les ressources par namespace : utilisez le flag -n <namespace>
  • Tester des changements sans les appliquer : kubectl apply -f <filename.yaml> --dry-run=client
  • Afficher les ressources au format YAML : kubectl get pod <pod-name> -o yaml

Qu'est-ce que kubectl ?

Kubectl est l'outil en ligne de commande (CLI) de Kubernetes qui vous permet d'interagir avec vos clusters et de créer, gérer, modifier et supprimer des ressources en toute simplicité. Il communique avec le serveur d'API Kubernetes afin que vous puissiez surveiller et piloter vos applications.

Comment fonctionne kubectl ?

Illustration Comment fonctionne kubectl : une commande kubectl est lue depuis le fichier kubeconfig, transformée en appel d'API REST, authentifiée puis envoyée en HTTPS au serveur d'API du plan de contrôle, qui la traite et renvoie une réponse JSON que kubectl met en forme et affiche

Kubectl fonctionne en envoyant des commandes au serveur d'API Kubernetes, qui exécute ensuite les opérations demandées au sein du cluster. Lorsque vous exécutez une commande kubectl, par exemple pour déployer une application ou consulter le statut de ressources, kubectl communique avec le serveur d'API via HTTP pour transmettre vos instructions. Le serveur d'API traite ces requêtes, met à jour l'état du cluster dans etcd (un magasin clé-valeur distribué) et demande aux autres composants, comme le scheduler ou le controller manager, d'effectuer les actions nécessaires pour atteindre l'état souhaité. Cette interaction vous permet de gérer et de surveiller efficacement vos ressources Kubernetes depuis la ligne de commande.

Remarque : dans les versions antérieures de Kubernetes, kubectl utilisait des générateurs pour créer des configurations de ressources à partir d'entrées spécifiques. Ces générateurs permettaient de préciser le type de ressource à créer, comme un Pod, un Deployment ou un Job, à l'aide du flag --generator. Par exemple, kubectl run nginx --image=nginx --generator=run-pod/v1 créait une ressource Pod. Cette approche permettait de scripter et d'automatiser la création de ressources avec des résultats prévisibles. Notez toutefois que le flag --generator a été déprécié dans Kubernetes v1.12 et supprimé dans la v1.18. Depuis la v1.18, kubectl run est simplifié et ne crée plus que des Pods, et l'usage des générateurs a été remplacé par des commandes plus explicites et déclaratives comme kubectl create et kubectl apply

C'est parti :

Configurer kubectl : version, informations du cluster et autocomplétion

La première étape après l'installation de kubectl consiste à vérifier qu'il est correctement installé et qu'il peut communiquer avec votre cluster. La commande suivante affiche la version du client et, si un cluster est configuré, celle du serveur :

Terminal window
kubectl version

Pour confirmer que kubectl est connecté au bon cluster, utilisez :

Terminal window
kubectl cluster-info

Cette commande affiche les adresses du plan de contrôle Kubernetes et des services principaux. En cas d'erreur, vérifiez que votre fichier kubeconfig est correctement configuré et que le cluster cible est joignable.

Vous pouvez également inspecter la configuration actuelle et les contextes disponibles avec :

Terminal window
kubectl config get-contexts
kubectl config current-context

Si vous travaillez avec plusieurs clusters, passer de l'un à l'autre est très simple :

Terminal window
kubectl config use-context <context-name>

Remplacer <context-name> par le contexte souhaité met à jour le cluster actif pour toutes les commandes kubectl suivantes.

Pour gagner en productivité, activez l'autocomplétion du shell. Votre shell complète alors automatiquement les commandes, les noms de ressources, les namespaces et d'autres arguments lorsque vous appuyez sur la touche Tab. Pour Bash, exécutez :

Terminal window
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

Pour Zsh, utilisez :

Terminal window
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

Un raccourci pratique consiste à créer un alias pour kubectl et à activer l'autocomplétion pour celui-ci :

Terminal window
alias k=kubectl
complete -o default -F __start_kubectl k

Si vous utilisez Zsh, remplacez la dernière ligne par :

Terminal window
compdef __start_kubectl k

Avec la vérification de version, la connectivité au cluster, la gestion des contextes et l'autocomplétion en place, votre environnement est prêt pour l'administration quotidienne de Kubernetes.

La cheat sheet kubectl ultime

Anatomie d'une commande kubectl : kubectl get pods -n prod -o wide, décomposée en programme, action, ressource, flag de namespace et flag de sortie

Flags optionnels

Kubectl propose des flags optionnels qui enrichissent la sortie des commandes et la gestion des ressources. Par exemple :

Formats de sortie :

Sortie JSON :

Utilisez le flag -o=json pour formater la sortie de la commande en JSON.

Terminal window
kubectl get pods -o=json

Sortie YAML :

Utilisez le flag -o=yaml pour formater la sortie de la commande en YAML.

Terminal window
kubectl get pods -o=yaml

Sortie étendue :

L'option -o=wide fournit une sortie texte détaillée (elle affiche par exemple le nom du nœud pour les pods).

Terminal window
kubectl get pods -o=wide

Pour des sorties plus personnalisées, kubectl propose le flag --custom-columns, qui permet de définir les colonnes à afficher.

Par exemple, pour lister les pods avec leur nom et le nœud sur lequel ils s'exécutent :

Terminal window
kubectl get pods -o=custom-columns="POD NAME:.metadata.name,NODE:.spec.nodeName"

Cette commande affichera :

POD NAME NODE
nginx-deployment-1 node-1
nginx-deployment-2 node-2

Spécification du namespace :

Par défaut, les commandes kubectl s'exécutent dans le namespace défini par le contexte courant. Pour cibler un namespace spécifique, utilisez le flag -n ou --namespace :

Terminal window
kubectl get pods -n <namespace_name>

Pour afficher les ressources de tous les namespaces, utilisez le flag -A ou --all-namespaces :

Terminal window
kubectl get pods -A

Et pour définir un namespace par défaut pour le contexte courant :

Terminal window
kubectl config set-context --current --namespace=ns_name

Fichier en entrée :

Le flag -f permet de spécifier un nom de fichier, un répertoire ou une URL lors de la création d'une ressource.

Terminal window
kubectl create -f ./file_name

Filtrage par label :

Utilisez le flag -l pour filtrer les ressources selon des labels spécifiques.

Terminal window
kubectl get pods -l name=label_name

Option d'aide :

Pour afficher l'aide des commandes kubectl, utilisez le flag -h.

Terminal window
kubectl -h

Mode watch :

Vous pouvez surveiller en continu les changements de ressources avec le flag --watch (ou -w) :

Terminal window
kubectl get pods -w

Tri de la sortie :

Vous pouvez trier la sortie selon un champ spécifique avec le flag --sort-by :

Terminal window
kubectl get pods --sort-by=.metadata.name

Utiliser kubectl avec des alias

Travailler avec kubectl implique de saisir des commandes longues, ce qui prend du temps et favorise les erreurs. Pour gagner en efficacité, de nombreux développeurs créent des alias pour les commandes fréquentes.

Créer un alias de base

Terminal window
alias k=kubectl
echo 'alias k=kubectl' >> ~/.bashrc

Vous pouvez ainsi utiliser k à la place de kubectl.

Vous pouvez utiliser le dépôt kubectl-aliases, qui fournit des centaines d'alias prédéfinis pour exécuter vos commandes plus rapidement.

Gestion du cluster, contextes et configuration

La gestion du cluster consiste à configurer, consulter et modifier votre cluster.

Commande Description
kubectl cluster-info Affiche les endpoints et les informations de base de votre cluster Kubernetes.
kubectl config get-contexts Liste tous les contextes définis dans votre fichier kubeconfig.
kubectl config current-context Affiche le contexte actuellement actif.
kubectl config use-context <context> Bascule le contexte actif vers celui que vous spécifiez.
kubectl config delete-context <context> Supprime un contexte de votre fichier kubeconfig.
kubectl api-versions Liste toutes les versions d'API disponibles dans le cluster.
kubectl api-resources Liste tous les types de ressources disponibles dans votre cluster, avec les détails des groupes d'API et des namespaces.
kubectl config view Affiche les détails de configuration de votre fichier kubeconfig (clusters, contextes, paramètres utilisateur).
kubectl version Affiche les informations de version du client kubectl et du serveur Kubernetes.

Gestion des pods

Raccourci : po

Un Pod est la plus petite unité de Kubernetes ; il représente une instance unique d'un processus en cours d'exécution dans votre cluster. Il peut contenir un ou plusieurs conteneurs qui partagent le stockage et les ressources réseau.

Commande Description
kubectl get pods Liste tous les pods du namespace courant.
kubectl describe pod <pod-name> Fournit des informations détaillées sur le pod spécifié : statut, événements et détails des conteneurs.
kubectl exec -it <pod-name> <command> Exécute la commande indiquée dans le pod spécifié en mode interactif (les flags -it permettent l'accès à un terminal interactif).
kubectl delete pod <pod-name> Supprime le pod spécifié du cluster.
kubectl run <pod-name> --image=<image_name> Crée et exécute un pod avec l'image spécifiée.
kubectl get pod -n <namespace_name> Liste tous les pods du namespace spécifié.
kubectl exec <pod-name> -c <container-name> <command> Exécute une commande dans un conteneur spécifique d'un pod.
kubectl top pod Affiche l'utilisation des ressources (CPU et mémoire) des pods.
kubectl annotate pod <pod-name> <annotation> Ajoute ou met à jour une annotation sur le pod spécifié.
kubectl get pods --field-selector=status.phase=Running Liste les pods actuellement en phase Running en filtrant sur le statut des pods.
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' Trie la liste des pods selon le nombre de redémarrages du premier conteneur de chaque pod.

Pour les ReplicaSets

Raccourci : rs

Un ReplicaSet garantit qu'un nombre défini de réplicas de pods est en cours d'exécution. Sa principale particularité : les ReplicaSets prennent en charge les sélecteurs de labels basés sur des ensembles.

Commande Description
kubectl get rs Liste tous les ReplicaSets du namespace courant.
kubectl get rs <replicaset_name> -o yaml Affiche la configuration du ReplicaSet spécifié au format YAML.
kubectl get rs <replicaset_name> -o json Affiche la configuration du ReplicaSet spécifié au format JSON.
kubectl describe rs <rs_name> Fournit des informations détaillées sur le ReplicaSet spécifié.
kubectl get rs --namespace=<ns_name> Liste tous les ReplicaSets du namespace spécifié.
kubectl delete rs <rs_name> --cascade=orphan Supprime le ReplicaSet spécifié mais laisse ses pods en cours d'exécution (les pods deviennent orphelins).
kubectl delete rs <rs_name> Supprime le ReplicaSet spécifié ainsi que tous les pods qu'il gère.
kubectl scale rs <rs_name> --replicas=<count> Ajuste (met à l'échelle) le nombre de pods gérés par le ReplicaSet spécifié à la valeur indiquée.
kubectl edit rs <rs_name> Ouvre la configuration du ReplicaSet dans votre éditeur par défaut pour effectuer des modifications en direct.
kubectl replace -f <rs_file.yaml> Remplace la configuration existante du ReplicaSet par celle fournie dans le fichier YAML.

Pour les DaemonSets

Raccourci : ds

Un DaemonSet garantit qu'un pod spécifique s'exécute sur tous les nœuds du cluster (ou certains d'entre eux). C'est utile pour des tâches comme l'exécution d'un agent de monitoring sur chaque nœud.

Commande Description
kubectl get daemonset Liste tous les DaemonSets du namespace courant.
kubectl describe daemonset <ds_name> Fournit des informations détaillées sur un DaemonSet spécifique.
kubectl get daemonset <daemonset_name> -o yaml Affiche la configuration du DaemonSet spécifié au format YAML.
kubectl get daemonset <ds_name> -o json Affiche la configuration du DaemonSet spécifié au format JSON.
kubectl delete daemonset <ds_name> Supprime le DaemonSet spécifié du cluster.
kubectl label daemonset <ds_name> <key>=<value> Ajoute ou met à jour un label sur le DaemonSet spécifié.
kubectl annotate daemonset <ds_name> <key>=<value> Ajoute ou met à jour une annotation sur le DaemonSet spécifié.
kubectl rollout status daemonset <ds_name> Vérifie le statut du rollout d'un DaemonSet.
kubectl rollout history daemonset <ds_name> Affiche l'historique des rollouts d'un DaemonSet.

Pour les StatefulSets

Raccourci : sts

Les StatefulSets gèrent le déploiement et la mise à l'échelle des pods, en garantissant à chacun une identité unique et stable ainsi qu'un stockage persistant. C'est essentiel pour les applications avec état.

Commande Description
kubectl get statefulset Liste tous les StatefulSets du namespace courant.
kubectl describe statefulset <statefulset_name> Fournit des informations détaillées sur le StatefulSet spécifié.
kubectl get statefulset <sts_name> -o yaml Affiche la configuration du StatefulSet spécifié au format YAML.
kubectl get statefulset <sts_name> -o json Affiche la configuration du StatefulSet spécifié au format JSON.
kubectl edit statefulset <sts_name> Ouvre la configuration du StatefulSet spécifié dans votre éditeur de texte par défaut pour effectuer des modifications en direct.
kubectl scale statefulset <sts_name> --replicas=<number> Ajuste le nombre de réplicas de pods gérés par le StatefulSet spécifié à la valeur indiquée.
kubectl rollout status statefulset <statefulset_name> Vérifie et affiche le statut du rollout du StatefulSet spécifié.

Pour les namespaces

Raccourci : ns

Les namespaces permettent de répartir les ressources du cluster entre plusieurs utilisateurs ou applications.

Commande Description
kubectl get namespace Liste tous les namespaces de votre cluster (les namespaces du contexte courant).
kubectl create namespace <namespace_name> Crée un nouveau namespace avec le nom spécifié.
kubectl describe namespace <namespace_name> Fournit des informations détaillées sur le namespace spécifié.
kubectl edit namespace <namespace_name> Ouvre la configuration du namespace spécifié dans votre éditeur de texte par défaut pour effectuer des modifications en direct.
kubectl delete namespace <namespace_name> Supprime le namespace spécifié de votre cluster ainsi que toutes les ressources qu'il contient.

Pour les services

Raccourci : svc

Un Service définit un ensemble logique de pods et une politique d'accès à ces derniers. Il permet la communication entre les différentes parties de votre application et peut exposer votre application au trafic externe.

Commande Description
kubectl get services Liste tous les services du namespace courant
kubectl create service <svc-type> <svc-name> --tcp=<port> Crée un nouveau service du type spécifié (par exemple clusterip, nodeport ou loadbalancer) avec le nom indiqué, en mappant TCP sur un port donné
kubectl edit service <svc-name> Ouvre un éditeur pour modifier la configuration du service spécifié
kubectl describe service <svc-name> Fournit des informations détaillées sur le service spécifié
kubectl delete service <svc-name> Supprime le service spécifié du cluster
kubectl get endpoints <svc-name> Liste les endpoints (c'est-à-dire les adresses IP des pods) qui sous-tendent le service spécifié
kubectl expose deployment [deploy_name] Crée un service qui expose le deployment spécifié ; les ressources exposables incluent pod (po), service (svc) et replicaset (rs)

Pour les Service Accounts

Raccourci : sa

Un ServiceAccount fournit une identité aux processus s'exécutant dans un pod, leur permettant d'interagir de manière sécurisée avec l'API Kubernetes.

Commande Description
kubectl get serviceaccounts Liste tous les comptes de service du namespace courant
kubectl describe serviceaccount <sa-name> Affiche des informations détaillées sur le compte de service spécifié
kubectl replace -f <sa.yaml> Remplace (met à jour) un compte de service avec une nouvelle configuration
kubectl delete serviceaccount <sa_name> Supprime le compte de service spécifié du cluster.

Pour les Deployments

Raccourci : deploy

Un Deployment fournit des mises à jour déclaratives pour les pods et les ReplicaSets. Vous définissez l'état souhaité de votre application, et le contrôleur de Deployment fait converger l'état réel vers l'état souhaité à un rythme contrôlé.

Commande Description
kubectl get deployment Liste tous les deployments du namespace courant.
kubectl describe deployment <deployment_name> Affiche des informations détaillées sur le deployment spécifié
kubectl create deployment <deployment-name> --image=<img-name> Crée un nouveau deployment nommé <deployment-name> à partir de l'image de conteneur spécifiée
kubectl edit deployment <deployment_name> Ouvre la configuration du deployment dans votre éditeur de texte par défaut pour une modification en direct
kubectl scale deployment <deployment-name> --replicas=<replica-count> Ajuste le nombre de réplicas de pods gérés par le deployment à la valeur spécifiée.
kubectl set image deployment/<deployment-name> <container-name>=<new-image-name> Met à jour l'image d'un conteneur spécifique au sein du deployment
kubectl rollout status deployment/<deployment-name> Affiche le statut actuel du rollout du deployment
kubectl rollout pause deployment/<deployment-name> Met en pause le processus de rollout, bloquant toute mise à jour jusqu'à la reprise
kubectl rollout resume deployment/<deployment-name> Reprend un rollout de deployment mis en pause
kubectl rollout undo deployment/<deployment-name> Rétablit le deployment à sa révision précédente
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number> Rétablit le deployment à un numéro de révision spécifique
kubectl delete deployment <deployment-name> Supprime le deployment spécifié ainsi que les pods qu'il gère

Pour les Jobs et CronJobs

Raccourci : job, cj

Un Job exécute un ou plusieurs pods jusqu'à ce qu'une tâche se termine avec succès. Un CronJob crée des Jobs selon une planification, ce qui le rend utile pour les sauvegardes, les rapports et autres tâches récurrentes.

Commande Description
kubectl get jobs Liste tous les Jobs du namespace courant.
kubectl describe job <job-name> Affiche des informations détaillées sur le Job spécifié.
kubectl create job <job-name> --image=<image-name> Crée un Job qui exécute l'image de conteneur spécifiée.
kubectl delete job <job-name> Supprime le Job spécifié.
kubectl get cronjobs Liste tous les CronJobs du namespace courant.
kubectl describe cronjob <cronjob-name> Affiche des informations détaillées sur le CronJob spécifié.
kubectl create cronjob <cronjob-name> --image=<image-name> --schedule="<cron-expression>" Crée un CronJob avec la planification spécifiée.
kubectl create job --from=cronjob/<cronjob-name> <job-name> Crée un Job ponctuel à partir d'un CronJob existant.
kubectl patch cronjob <cronjob-name> -p '{"spec":{"suspend":true}}' Suspend les exécutions futures du CronJob.
kubectl delete cronjob <cronjob-name> Supprime le CronJob spécifié.

Pour les Horizontal Pod Autoscalers

Raccourci : hpa

Un Horizontal Pod Autoscaler (HPA) ajuste automatiquement le nombre de réplicas de pods en fonction de métriques comme l'utilisation CPU ou mémoire.

Commande Description
kubectl get hpa Liste tous les Horizontal Pod Autoscalers.
kubectl describe hpa <hpa-name> Affiche des informations détaillées sur le HPA spécifié.
kubectl autoscale deployment <deployment-name> --cpu-percent=<target> --min=<min> --max=<max> Crée un HPA pour le deployment spécifié.
kubectl edit hpa <hpa-name> Ouvre la configuration du HPA pour une modification en direct.
kubectl delete hpa <hpa-name> Supprime le HPA spécifié.
kubectl get hpa -w Observe en temps réel les métriques du HPA et les événements de mise à l'échelle.
kubectl top pods Affiche l'utilisation des ressources des pods exploitée par le Metrics Server.
kubectl top nodes Affiche l'utilisation CPU et mémoire des nœuds.

Pour le RBAC et la vérification des permissions

Le contrôle d'accès basé sur les rôles (RBAC) détermine quels utilisateurs et comptes de service peuvent accéder aux ressources Kubernetes.

Commande Description
kubectl get roles Liste tous les Roles du namespace courant.
kubectl get rolebindings Liste tous les RoleBindings du namespace courant.
kubectl get clusterroles Liste tous les ClusterRoles.
kubectl get clusterrolebindings Liste tous les ClusterRoleBindings.
kubectl describe role <role-name> Affiche des informations détaillées sur le Role spécifié.
kubectl describe clusterrole <clusterrole-name> Affiche des informations détaillées sur le ClusterRole spécifié.
kubectl auth can-i <verb> <resource> Vérifie si l'utilisateur courant peut effectuer une action sur une ressource.
kubectl auth can-i <verb> <resource> --as=<user> Vérifie les permissions d'un autre utilisateur.
kubectl auth can-i --list Liste toutes les permissions dont dispose l'utilisateur courant.

Pour les ressources Ingress

Raccourci : ing

Un Ingress gère l'accès HTTP et HTTPS externe aux services d'un cluster Kubernetes. Il nécessite généralement un contrôleur Ingress.

Commande Description
kubectl get ingress Liste toutes les ressources Ingress du namespace courant.
kubectl describe ingress <ingress-name> Affiche des informations détaillées sur l'Ingress spécifié.
kubectl create ingress <ingress-name> --rule="<host>/<path>=<service>:<port>" Crée un Ingress avec une règle de routage.
kubectl edit ingress <ingress-name> Ouvre la configuration de l'Ingress pour une modification en direct.
kubectl delete ingress <ingress-name> Supprime l'Ingress spécifié.
kubectl get ingress -A Liste les ressources Ingress de tous les namespaces.
kubectl get ingress <ingress-name> -o yaml Affiche la configuration de l'Ingress au format YAML.

Pour le débogage avancé

Ces commandes aident à diagnostiquer les problèmes d'applications, de réseau et de ressources dans un cluster Kubernetes.

Commande Description
kubectl logs <pod-name> Affiche les logs du pod spécifié.
kubectl logs <pod-name> -c <container-name> Affiche les logs d'un conteneur spécifique dans un pod multi-conteneurs.
kubectl logs -f <pod-name> Diffuse en continu les logs du pod spécifié.
kubectl logs <pod-name> --previous Affiche les logs de l'instance précédente d'un conteneur ayant planté.
kubectl exec -it <pod-name> -- /bin/sh Ouvre un shell interactif dans un conteneur en cours d'exécution.
kubectl port-forward pod/<pod-name> <local-port>:<pod-port> Redirige un port local vers un pod à des fins de débogage.
kubectl debug <pod-name> -it --image=busybox Crée un conteneur de débogage éphémère attaché au pod spécifié.
kubectl get events --sort-by=.metadata.creationTimestamp Liste les événements du cluster par ordre chronologique.
kubectl describe node <node-name> Affiche l'état du nœud, les ressources allouées et les événements récents.
kubectl cp <pod-name>:<remote-path> <local-path> Copie des fichiers d'un pod vers la machine locale.

Pour les événements

Raccourci : ev

Les événements sont des enregistrements de ce qui s'est produit dans votre cluster : créations de pods, suppressions, erreurs, etc.

Commande Description
kubectl get events Liste tous les événements du namespace courant
kubectl get events --field-selector type!=Normal Affiche les événements qui ne sont pas de type Normal
kubectl get events --field-selector type=Warning Filtre et affiche uniquement les événements de type Warning
kubectl get events -w Surveille les nouveaux événements en temps réel
kubectl get events --field-selector involvedObject.name=<object_name> Affiche les événements liés à un objet spécifique, comme un pod ou un nœud

Logs

Les logs sont la sortie de vos applications en cours d'exécution et des composants système.

Commande Description
kubectl logs <pod_name> Récupère et affiche les logs du conteneur principal du pod spécifié
kubectl logs -f <pod_name> Diffuse en direct les logs du pod spécifié
kubectl logs --since=6h <pod_name> Affiche les logs du pod spécifié générés au cours des 6 dernières heures
kubectl logs --tail=50 <pod_name> Affiche les 50 dernières lignes de logs du pod spécifié
kubectl logs -f <pod_name> -c <container_name> Diffuse en direct les logs d'un conteneur spécifique au sein d'un pod
kubectl logs <pod_name> > podfile.log Enregistre les logs d'un pod dans un fichier nommé podfile.log
kubectl logs --previous <pod_name> Affiche les logs de l'instance précédente d'un conteneur dans le pod spécifié

Pour les Secrets et ConfigMaps

Raccourci pour les ConfigMaps : cm

Les Secrets stockent des informations sensibles comme des mots de passe ou des clés, tandis que les ConfigMaps contiennent des données de configuration non sensibles. Les deux permettent de découpler les artefacts de configuration du contenu des images afin de garder vos applications portables.

Commande Description
kubectl get secrets Liste tous les secrets du namespace courant
kubectl get configmaps Liste toutes les ConfigMaps du namespace courant
kubectl describe secret <secret-name> Fournit des informations détaillées sur le secret spécifié
kubectl delete secret <secret-name> Supprime le secret spécifié du cluster
kubectl describe configmap <configmap-name> Fournit des informations détaillées sur la ConfigMap spécifiée
kubectl create configmap <config-map-name> --from-file=<path-to-file> Crée une nouvelle ConfigMap avec le nom donné à partir du contenu du fichier spécifié
kubectl create secret <secret-type> <secret-name> --from-literal=key=value Crée un nouveau secret du type spécifié à partir d'une paire clé-valeur

Pour la gestion des nœuds

Raccourci : no

Un Node (nœud) est une machine de travail dans Kubernetes.

Commande Description
kubectl get nodes Liste tous les nœuds de votre cluster
kubectl describe node <node-name> Fournit des informations détaillées sur le nœud spécifié
kubectl drain <node-name> Prépare le nœud pour la maintenance en évinçant tous les pods et en marquant le nœud comme non planifiable
kubectl uncordon <node-name> Marque un nœud précédemment isolé (non planifiable) comme de nouveau planifiable, permettant d'y planifier de nouveaux pods
kubectl label node <node_name> <key>=<value> Ajoute ou met à jour un label sur le nœud spécifié
kubectl cordon <node_name> Marque le nœud spécifié comme non planifiable
kubectl taint node <node_name> <key>=<value>:<taint-effect> Applique un taint au nœud spécifié
kubectl top node <node_name> Affiche les métriques d'utilisation des ressources (CPU et mémoire) du nœud spécifié
kubectl annotate node <node_name> <key>=<value> Ajoute ou met à jour une annotation sur le nœud spécifié

Pour le stockage (PV, PVC)

Raccourci pour Persistent Volume : pv

Raccourci pour Persistent Volume Claim : pvc

Les PersistentVolumes sont des ressources de stockage de votre cluster, et les PersistentVolumeClaims sont des demandes de stockage émises par les utilisateurs.

Commande Description
kubectl get pv Liste tous les Persistent Volumes du cluster
kubectl describe pv <pv-name> Fournit des informations détaillées sur un Persistent Volume spécifique
kubectl get pvc Liste toutes les Persistent Volume Claims du namespace courant
kubectl describe pvc <pvc-name> Affiche des informations détaillées sur une Persistent Volume Claim spécifique

Pour copier des fichiers et des répertoires

Vous pouvez transférer des fichiers entre votre système local et le conteneur d'un pod, ce qui facilite le débogage ou la sauvegarde de données.

Commande Description
kubectl cp <local-path> <namespace>/<pod-name>:<container-path> Copie un fichier ou un répertoire de votre machine locale vers un conteneur dans le pod et le namespace spécifiés.
kubectl cp <source-pod-name>:<source-container-path> <local-path> -n <namespace> Copie un fichier ou un répertoire depuis un conteneur d'un pod (dans le namespace donné) vers votre machine locale.
kubectl cp <local-path> <destination-namespace>/<destination-pod-name>:<destination-container-path> Copie un fichier ou un répertoire de votre machine locale vers le pod et le namespace de destination.

Pour la verbosité de sortie et le débogage

La verbosité désigne le niveau de détail des logs générés par des composants comme kubectl et kubelet. Vous pouvez ajuster la verbosité des commandes kubectl.

Commande Description
kubectl get <resource-type> --v=<verbosity-level> Forme générale pour définir le niveau de verbosité. Elle indique à kubectl la quantité d'informations de débogage à inclure lors de l'exécution de la commande sur le type de ressource spécifié.
kubectl get <resource-type> --v=0 Exécute la commande avec un minimum d'informations de débogage (niveau par défaut).
kubectl get <resource-type> --v=7 Fournit un niveau de verbosité plus élevé, avec des informations de débogage supplémentaires, dont les en-têtes des requêtes HTTPS envoyées par le client.
kubectl get <resource-type> --v=8 Augmente encore la verbosité. Au niveau 8, le contenu des requêtes et réponses HTTP (données du corps) est également affiché.

FAQ

Qu'est-ce que kubectl ? kubectl est l'outil en ligne de commande de Kubernetes. Il envoie vos commandes au serveur d'API Kubernetes, qui exécute la requête dans le cluster : vous pouvez ainsi créer, gérer, modifier et supprimer des ressources et surveiller vos applications.

Comment passer d'un cluster à l'autre avec kubectl ? Exécutez kubectl config get-contexts pour lister les contextes de votre fichier kubeconfig, puis kubectl config use-context <context-name> pour en activer un. Toutes les commandes kubectl suivantes s'exécutent alors sur ce cluster.

Comment lister les pods de tous les namespaces ? Ajoutez le flag -A (ou --all-namespaces), par exemple kubectl get pods -A. Pour cibler un seul namespace, utilisez plutôt -n <namespace_name>.

Comment consulter les logs d'un conteneur qui a planté ? Exécutez kubectl logs <pod-name> --previous pour voir les logs de l'instance précédente du conteneur. Ajoutez -c <container-name> si le pod contient plusieurs conteneurs.

Comment revenir à la version précédente d'un deployment ? Exécutez kubectl rollout undo deployment/<deployment-name> pour revenir à la révision précédente. Pour choisir une révision spécifique, ajoutez --to-revision=<revision-number>.

Comment configurer un alias kubectl et l'autocomplétion ? Exécutez alias k=kubectl pour utiliser k à la place de kubectl, et ajoutez-le à votre ~/.bashrc pour le conserver. Pour l'autocomplétion Bash, ajoutez source <(kubectl completion bash) à ~/.bashrc. La cheat sheet couvre aussi Zsh.

Réduisez vos coûts cloud jusqu'à 50 % avec PerfectScale

PerfectScale est un outil puissant conçu pour fonctionner en parfaite harmonie avec Kubernetes. En intégrant PerfectScale à votre environnement Kubernetes, vous simplifiez et optimisez l'orchestration de vos conteneurs. Cette intégration renforce l'efficacité de la gestion de vos clusters : vous allouez vos ressources plus efficacement, réduisez vos coûts opérationnels et améliorez la stabilité et la résilience globales de vos applications. Les analyses pilotées par l'IA de PerfectScale offrent une visibilité complète sur les performances de votre système et permettent des ajustements proactifs pour répondre à des demandes dynamiques. Vous garantissez ainsi des performances optimales tout en réduisant vos coûts jusqu'à 50 % grâce à des actions autonomes et pilotées par les données qui optimisent en continu chaque couche de votre stack Kubernetes. Pour découvrir les bénéfices de PerfectScale par vous-même, réservez une démo et démarrez un essai gratuit dès aujourd'hui !