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 :

Recommandé mais non obligatoire :

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 :

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