Cheatsheet débutant pour kubectl
La commande kubectl
permet de faire beaucoup de choses, comme Kubernetes finalement. Pour une personne qui n'est pas habituée à kubectl
et Kubernetes en général, se rappeler des commandes essentielles peut être difficile !
Cette antisèche vous propose un petit tour des commandes utiles.
Prérequis :
- savoir ce qu'est un pod sur Kubernetes
- avoir installé la commande
kubectl
- avoir connecté
kubectl
au cluster Kubernetes de son choix
Recommandé mais non obligatoire :
- savoir ce que sont des deployments, replicasets et statefulsets sur Kubernetes
- savoir ce qu'est un service sur Kubernetes
Lister les types de ressources disponibles
kubectl api-resources
En plus des ressources proposées par Kubernetes, les définitions de ressources personnalisées (Custom Resources Definitions ou CRDs) seront listées. Si vous ne connaissez pas les CRDs, ce n'est pas problématique pour comprendre les informations données ici.
Lister les ressources
Suivre le schéma suivant :
kubectl get <type de ressource>[,<type de ressources>[…]]
Types de ressources utiles :
pods
deployments
services
replicasets
statefulsets
Exemples
Lister les deployments :
kubectl get deployments
Lister les services et les pods :
kubectl get services,pods
Lister toutes les « ressources principales » :
kubectl get all
Cette dernière commande ne liste pas toutes les ressources, à utiliser en connaissance de cause.
Décrire une ressource
Il sera certainement nécessaire de lister les ressources au préalable.
Sortie brute
Commande de base :
kubectl get <type de ressource>/<nom de ressource>
Il est possible de changer le /
entre <type de ressource>
et <nom de ressource>
par un espace.
Un paramètre -o
peut être rajouté pour changer le format de sortie.
Exemples
Voir si un statefulset nommé « mon-application-stateful » est présent :
kubectl get statefulset/mon-application-stateful
Obtenir les informations brutes sur un service nommé « mon-service » :
kubectl get service mon-service -o yaml
Description formatée
Utiliser la commande :
kubectl describe <type de ressource>/<nom de ressource>
Le /
entre <type de ressource>
et <nom de ressource>
peut être remplacé par un espace.
Exemples
Décrire les informations à propos d'un pod nommé « ma-petite-application » :
kubectl describe pod/ma-petite-application
Débugger une ressource
Il sera certainement nécessaire de lister les ressources au préalable.
Obtenir les logs
La commande de base est :
kubectl logs <type de ressource>/<nom de ressource>
Si <type de ressource>
n'est pas précisé, la ressource doit être un pod.
Si <type de ressource>
est précisé, le /
entre <type de ressource>
et <nom de ressource>
est obligatoire et ne peut pas être remplacé par un espace.
L'option -f
pour cette commande est utile pour suivre les logs en direct.
Si vous choisissez deploy
, statefulset
ou une autre ressource équivalente qui génère et/ou gère plusieurs pods, un seul pod sera choisi par kubectl
.
Exemples
Suivre les journaux d'un pod nommé « ma-petite-application » :
kubectl logs -f ma-petite-application
Obtenir les journaux d'un pod dans un deployment « ma-grande-application » :
kubectl logs deployment/ma-grande-application
Entrer dans un pod
Il est possible d'exécuter une commande dans un pod, par exemple obtenir un shell interactif.
La commande de base est :
kubectl exec <type de ressource>/<nom de ressource> -- <commande> [argument1 [argument2 …]]
Pour obtenir un shell, on peut utiliser les options --stdin
et --tty
:
# Si Bash est disponible dans le conteneur
kubectl exec -it <type de ressource>/<nom de ressource> -- bash
# Sinon, un simple shell peut être utilisé
kubectl exec -it <type de ressource>/<nom de ressource> -- /bin/sh