Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Kubectl Cheat Sheet : maîtrisez Kubernetes grâce à ces commandes [PDF gratuit inclus]

By DoiTApr 14, 202511 min read

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

personne codant sur un ordinateur portable

Au cœur de la boîte à outils de tout administrateur Kubernetes, on trouve kubectl : la puissante interface en ligne de commande conçue pour gérer efficacement les clusters Kubernetes.

Kubectl (qui se prononce kube-control ou kube-C-T-L) constitue votre canal de communication direct avec le serveur API Kubernetes. Il vous permet de déployer des applications, d'inspecter des ressources, de consulter des logs et d'exécuter pratiquement n'importe quelle opération au sein de votre cluster. Que vous soyez ingénieur DevOps, administrateur de plateforme ou développeur travaillant sur des applications conteneurisées, maîtriser kubectl est indispensable pour une gestion efficace de Kubernetes dans le cloud computing.

Ce cheat sheet pratique recense les commandes kubectl les plus utiles, avec des exemples concrets et des astuces pour vous faire gagner en efficacité au quotidien sur Kubernetes.

Quelles sont les principales catégories de commandes kubectl ?

Logo Kubectl Logo Kubectl

Les commandes kubectl se répartissent en trois grandes catégories, chacune couvrant un aspect différent de la gestion de cluster :

1. Commandes d'information sur le cluster

Ces commandes apportent un éclairage sur l'état et la configuration de votre cluster Kubernetes :

  • Obtenir des informations sur les composants du cluster
  • Consulter l'état et les ressources des nœuds
  • Vérifier la santé de l'apiserver
  • Inspecter les composants du control plane

2. Commandes de gestion des ressources

Les commandes de gestion des ressources servent à créer, modifier, supprimer et inspecter les ressources Kubernetes :

  • Créer et mettre à jour des ressources
  • Lister et décrire les ressources
  • Supprimer des ressources
  • Augmenter ou réduire la taille des ressources
  • Modifier les ressources en temps réel

3. Commandes de déploiement d'applications

Enfin, les commandes de déploiement d'applications simplifient la mise en production et la gestion du cycle de vie applicatif :

  • Déployer des applications depuis du YAML ou du JSON
  • Gérer les déploiements et les rollouts
  • Configurer l'autoscaling
  • Mettre à jour les configurations applicatives
  • Gérer la mise en réseau des applications

Ces trois catégories en tête, examinons de plus près quelques commandes kubectl que vous serez amené à utiliser souvent dans votre parcours Kubernetes.

Pour aller plus loin : le cheat sheet des commandes kubectl

personne codant sur un ordinateur portable personne codant sur un ordinateur portable

Voici un cheat sheet à garder sous la main, qui répertorie les commandes kubectl que vous utiliserez régulièrement, accompagnées d'exemples pour fluidifier vos workflows Kubernetes.

Pods

Les Pods sont les plus petites unités déployables de Kubernetes. Ils regroupent un ou plusieurs conteneurs qui partagent des ressources de stockage et de réseau.

Lister tous les pods :

kubectl get pods

Lister les pods avec plus de détails :

kubectl get pods -o wide

Obtenir des informations détaillées sur un pod précis :

kubectl describe pod

Créer un pod à partir d'un fichier YAML :

kubectl apply -f pod.yaml

Supprimer un pod :

kubectl delete pod

Exécuter une commande dans le conteneur d'un pod :

kubectl exec -it --

Récupérer les logs d'un pod :

kubectl logs

Suivre les logs d'un pod en temps réel :

kubectl logs -f

Récupérer les logs d'un conteneur précis dans un pod multi-conteneurs :

kubectl logs -c

Faire un port-forward vers un pod :

kubectl port-forward :

Copier des fichiers vers/depuis un pod :

kubectl cp :/path/to/file /local/path

kubectl cp /local/path :/path/in/pod

Services

Les Services apportent une mise en réseau stable aux pods et facilitent la communication entre composants en jouant le rôle de couche d'abstraction.

Lister tous les services :

kubectl get services

Obtenir des informations détaillées sur un service :

kubectl describe service

Créer un service à partir d'un fichier YAML :

kubectl apply -f service.yaml

Exposer un déploiement sous forme de service :

kubectl expose deployment --port= --target-port=

Supprimer un service :

kubectl delete service

Voir les endpoints associés à un service :

kubectl get endpoints

Créer un service ClusterIP :

kubectl create service clusterip --tcp=:

Créer un service NodePort :

kubectl create service nodeport --tcp=:

Créer un service LoadBalancer :

kubectl create service loadbalancer --tcp=:

Deployments

Les Deployments assurent des mises à jour déclaratives pour les Pods et les ReplicaSets, ce qui simplifie la mise à l'échelle et l'évolution des applications.

Lister tous les déploiements :

kubectl get deployments

Obtenir des informations détaillées sur un déploiement :

kubectl describe deployment

Créer un déploiement à partir d'un fichier YAML :

kubectl apply -f deployment.yaml

Créer un déploiement directement en ligne de commande :

kubectl create deployment --image=

Mettre à l'échelle un déploiement :

kubectl scale deployment --replicas=

Mettre à jour l'image du conteneur d'un déploiement :

kubectl set image deployment/ =

Revenir à une révision précédente d'un déploiement :

kubectl rollout undo deployment/

Voir le statut du rollout d'un déploiement :

kubectl rollout status deployment/

Voir l'historique des rollouts d'un déploiement :

kubectl rollout history deployment/

Mettre en pause le rollout d'un déploiement :

kubectl rollout pause deployment/

Reprendre le rollout d'un déploiement :

kubectl rollout resume deployment/

ConfigMaps et Secrets

Les ConfigMaps et les Secrets servent à stocker, respectivement, des données de configuration et des informations sensibles.

Note de sécurité importante : par défaut, les ConfigMaps et les Secrets sont stockés non chiffrés dans etcd. Si vous manipulez des données sensibles, activez le chiffrement au repos.

Lister les ConfigMaps :

kubectl get configmaps

Créer une ConfigMap à partir de valeurs littérales :

kubectl create configmap --from-literal=key1=value1 --from-literal=key2=value2

Créer une ConfigMap à partir d'un fichier :

kubectl create configmap --from-file=

Obtenir des informations détaillées sur une ConfigMap :

kubectl describe configmap

Supprimer une ConfigMap :

kubectl delete configmap

Lister les Secrets :

kubectl get Secrets

Créer un Secret à partir de valeurs littérales :

kubectl create secret generic --from-literal=key1=value1 --from-literal=key2=value2

Créer un Secret à partir d'un fichier :

kubectl create secret generic --from-file=

Obtenir des informations détaillées sur un Secret :

kubectl describe secret

Supprimer un Secret :

kubectl delete secret

Astuces de pro pour utiliser kubectl

personne consultant son téléphone tout en codantpersonne consultant son téléphone tout en codant

Kubectl est l'outil en ligne de commande incontournable pour travailler avec les clusters Kubernetes et en gérer les ressources. Le maîtriser vous simplifiera considérablement la vie : déploiements, mise à l'échelle et dépannage gagnent tous en efficacité. Avec kubectl edit, vous modifiez rapidement des ressources comme les pods et les déploiements, directement en ligne de commande.

Tirez parti des namespaces

Les Namespaces sont une fonctionnalité centrale de Kubernetes : ils permettent de découper votre cluster en sous-clusters virtuels. Très utile dans les environnements multi-tenants ou pour des applications plus complexes.

Lister les ressources d'un namespace donné :

kubectl get -n

Créer une ressource dans un namespace donné :

kubectl apply -f <file.yaml> -n

Définir le namespace par défaut pour toutes les commandes kubectl :

kubectl config set-context --current --namespace=

Voir les ressources sur l'ensemble des namespaces :

kubectl get --all-namespaces

Créer un nouveau namespace :

kubectl create namespace

Mieux vaut regrouper les ressources liées dans leurs propres namespaces pour poser des frontières claires entre applications ou équipes. Choisissez des noms parlants, comme dev-frontend, prod-backend ou monitoring.

Sélecteurs de labels pour filtrer les ressources

Les Labels sont des paires clé-valeur attachées aux objets Kubernetes. Ils sont parfaits pour organiser, sélectionner et gérer plus aisément des groupes de ressources.

Lister les ressources portant un label précis :

kubectl get -l key=value

Lister les ressources avec plusieurs conditions de label :

kubectl get -l ‘key1=value1,key2=value2’

Lister les ressources qui possèdent une clé de label précise (quelle que soit la valeur) :

kubectl get -l ‘key’

Lister les ressources qui n'ont pas un label précis :

kubectl get -l ‘!key’

Ajouter un label à une ressource existante :

kubectl label key=value

Retirer un label d'une ressource :

kubectl label key-

Une stratégie de labellisation cohérente est la clé d'une gestion efficace des ressources. Misez sur des labels comme app, environment, tier, version et owner pour structurer clairement votre inventaire.

Mettez en place des rolling updates

Kubernetes facilite la mise à jour des applications sans interruption grâce aux rolling updates. Cette stratégie remplace progressivement les instances de l'ancienne version par la nouvelle.

Mettre à jour un déploiement avec une nouvelle image (déclenche un rolling update) :

kubectl set image deployment/ =:

Vérifier le statut du rollout :

kubectl rollout status deployment/

Configurer la stratégie de mise à jour dans un YAML de déploiement :

spec:

strategy:

type: RollingUpdate

rollingUpdate:

 maxUnavailable: 25%

 maxSurge: 25%

Revenir à la version précédente en cas de problème :

kubectl rollout undo deployment/

Mettre en pause le rollout d'un déploiement :

Copykubectl rollout pause deployment/

C'est particulièrement utile pour les déploiements progressifs : vous livrez sur un sous-ensemble de pods, vérifiez le bon fonctionnement, puis poursuivez le rollout après validation.

Reprendre le rollout d'un déploiement :

Copykubectl rollout resume deployment/

Pour les applications critiques, pensez au flag --record lors de modifications de déploiement. Il associe à la révision la commande utilisée, ce qui facilite le suivi de l'historique :

kubectl apply -f deployment.yaml --record

Pilotez quotas et limites de ressources avec rigueur

La gestion des ressources joue un rôle clé dans l'administration de Kubernetes. Définir les bonnes requests et limites est essentiel pour préserver la stabilité de votre cluster et garantir un partage équitable des ressources.

Voir les quotas de ressources d'un namespace :

kubectl get resourcequota -n

Créer un quota de ressources pour un namespace :

kubectl create quota --hard=cpu=1,memory=1G,pods=10 -n

Vérifier l'utilisation des ressources des pods :

kubectl top pods

Vérifier l'utilisation des ressources des nœuds :

kubectl top nodes

Lorsque vous définissez les spécifications d'un conteneur, indiquez systématiquement les requests et les limites :

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"

Souvenez-vous : les requests aident le scheduler à déterminer où placer votre pod, tandis que les limites fixent l'utilisation maximale au-delà de laquelle les conteneurs risquent d'être terminés. Bonne pratique : calez les requests sur l'utilisation attendue en régime stable, et les limites sur ce qui reste acceptable lors des pics.

Maîtrisez le débogage avec kubectl

Le débogage est essentiel pour faire tourner sereinement vos applications Kubernetes. Heureusement, kubectl ne manque pas de commandes pour vous aider à diagnostiquer rapidement.

Récupérer les logs d'un conteneur :

kubectl logs -c

Débogage interactif via un pod temporaire :

kubectl run debug --rm -it --image=busybox -- sh

Créer un conteneur de débogage attaché à un pod existant :

kubectl debug -it --image=busybox --share-processes --copy-to=

Voir les events d'un namespace :

kubectl get events -n

Vérifier les conditions et les détails de statut d'un pod :

Copykubectl describe pod

Vous obtenez ainsi une sortie plus structurée des conditions du pod, avec l'historique complet des transitions et l'état actuel dans un format facile à lire.

Vérifier la connectivité entre pods avec un conteneur de débogage réseau :

kubectl run test-connectivity --rm -it --image=nicolaka/netshoot -- bash

Pour les problèmes récurrents, pensez au flag -- previous pour consulter les logs des conteneurs précédemment plantés :

kubectl logs --previous

Bonnes pratiques de sécurité avec kubectl

deux personnes codant sur un ordinateur portabledeux personnes codant sur un ordinateur portable

Sécuriser votre cluster Kubernetes est primordial, et kubectl y joue un rôle de premier plan. Voici quelques bonnes pratiques pour garder la main sur la sécurité :

Gérez les contrôles d'accès avec RBAC

Le Role-Based Access Control (RBAC) est la référence en matière d'autorisation dans Kubernetes. Il vous permet de définir des permissions fines pour les utilisateurs et les comptes de service.

Voir les rôles d'un namespace :

kubectl get roles -n

Voir les cluster roles :

kubectl get clusterroles

Voir les role bindings :

kubectl get rolebindings -n

Voir les cluster role bindings :

kubectl get clusterrolebindings

Créer un rôle avec des permissions spécifiques :

kubectl create role developer --verb=get,list,watch --resource=pods,deployments -n

Associer un rôle à un utilisateur :

kubectl create rolebinding dev-user-binding --role=developer --user=dev-user -n

Privilégiez toujours les RoleBindings aux ClusterRoleBindings dès que possible afin de cantonner les permissions à un namespace donné. C'est l'application directe du principe du moindre privilège : on n'ouvre l'accès qu'aux namespaces qui en ont besoin, ce qui réduit l'impact potentiel d'une compromission d'identifiants.

Tenez-vous-en au principe du moindre privilège en n'accordant aux utilisateurs et aux comptes de service que les permissions strictement nécessaires à leurs missions. Prenez l'habitude de revoir régulièrement les role bindings pour qu'ils restent en phase avec l'évolution des rôles et des responsabilités.

Manipulez les Secrets en toute sécurité

Les Kubernetes Secrets doivent être manipulés avec précaution, car ils contiennent des informations sensibles : clés d'API, mots de passe, certificats, etc.

Créer un secret en toute sécurité depuis un fichier :

kubectl create secret generic db-credentials --from-file=./username.txt --from-file=./password.txt

Créer un secret TLS :

kubectl create secret tls tls-secret --cert=path/to/cert --key=path/to/key

Monter des Secrets en variables d'environnement :

env:

- name: DB_PASSWORD

valueFrom:

 secretKeyRef:

   name: db-credentials

   key: password

Monter des Secrets en tant que fichiers :

volumes:

- name: secret-volume

secret:

 secretName: ssl-certificates

Pensez à des outils externes de gestion des secrets comme HashiCorp Vault, AWS Secrets Manager ou Sealed Secrets pour renforcer la sécurité. Ils apportent des fonctionnalités précieuses : rotation des secrets, pistes d'audit et chiffrement.

Utilisez kubectl avec un contexte sûr

Vérifiez systématiquement que vous opérez dans le bon contexte, pour éviter de modifier le mauvais cluster par inadvertance.

Voir tous les contextes disponibles :

kubectl config get-contexts

Basculer vers un contexte précis :

kubectl config use-context

Voir le contexte courant :

kubectl config current-context

Définir le namespace du contexte courant :

kubectl config set-context --current --namespace=

Sur les environnements de production sensibles, mieux vaut s'appuyer sur des repères visuels — par exemple un prompt shell — affichant le cluster et le namespace courants. C'est un excellent moyen d'éviter les actions accidentelles sur les mauvaises ressources.

Mettez en place des network policies

Les Network Policies font office de pare-feu au sein de votre cluster Kubernetes : elles régissent la communication entre pods.

Lister les network policies :

kubectl get networkpolicies

Créer une network policy qui refuse par défaut tout le trafic entrant :

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: default-deny-ingress

spec:

podSelector: {}

policyTypes:

- Ingress

EOF

Créer une network policy qui autorise un trafic spécifique :

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: allow-frontend-to-backend

spec:

podSelector:

matchLabels:

 app: backend

ingress:

- from:

- podSelector:

   matchLabels:

     app: frontend

ports:

- port: 8080

EOF

Démarrez avec une network policy de type deny-all comme socle, puis n'autorisez que le trafic réellement nécessaire. Vous appliquez ainsi le principe du moindre privilège tout en réduisant au maximum votre surface d'attaque.

Maîtrisez la gestion de Kubernetes avec ces commandes kubectl et bonnes pratiques

Kubectl est un outil incontournable de l'écosystème Kubernetes : c'est votre interface privilégiée pour gérer et opérer vos clusters. En vous appropriant ces commandes et les bonnes pratiques de ce cheat sheet, vous serez prêt à relever en toute confiance les défis des applications conteneurisées.

Gardez en tête que Kubernetes évolue en permanence, et kubectl avec lui. Restez à l'affût des nouveautés et des mises à jour pour continuer à perfectionner vos compétences en gestion de cluster.

Si vous souhaitez explorer des sujets plus avancés, comme l'extension des plages d'adresses IP des services Kubernetes, consultez notre guide détaillé sur la manière d'étendre ces plages en toute fluidité.

À mesure que votre installation Kubernetes monte en charge et gagne en complexité, disposer des bons outils et du bon savoir-faire devient encore plus déterminant. C'est précisément là qu'intervient DoiT. Notre équipe mondiale d'architectes cloud accompagne les entreprises dans la construction d'infrastructures cloud rentables, scalables et résilientes. Nous sommes là pour vous épauler sur les défis pointus de configuration et d'intégration Kubernetes, tout en assurant le dépannage et l'amélioration de l'efficacité opérationnelle.

Échangeons pour découvrir comment nous pouvons vous aider à optimiser votre stratégie d'orchestration de conteneurs, pour de meilleures performances et davantage d'économies.