Contactez-nous

Exemple concret : créer un Pod simple (ex: Nginx) via `kubectl run` (approche impérative simple)

Apprenez à créer rapidement un Pod Kubernetes simple, comme Nginx, en utilisant la commande impérative `kubectl run`. Idéal pour les tests rapides.

Introduction à `kubectl run` : l'approche impérative

Avant de plonger dans les manifestes YAML, qui représentent l'approche déclarative et recommandée pour gérer les ressources Kubernetes, il est utile de connaître une méthode plus directe pour créer rapidement des objets simples : la commande `kubectl run`. Cette commande adopte une approche impérative, c'est-à-dire que vous dites à Kubernetes "fais ceci" (exécute une image), plutôt que de déclarer l'état désiré.

Historiquement, `kubectl run` était principalement utilisée pour créer des objets de type Déploiement. Cependant, son comportement a évolué, et elle est maintenant aussi un moyen très pratique pour lancer un unique Pod, notamment à des fins de test ou de débogage rapide. C'est une excellente façon de se familiariser avec le lancement de conteneurs dans Kubernetes sans la complexité initiale des fichiers YAML.

L'objectif de ce sous-chapitre est de vous montrer comment utiliser `kubectl run` pour démarrer un Pod simple exécutant le serveur web Nginx. Nous verrons la syntaxe de base, l'exécution de la commande, et comment vérifier que notre Pod fonctionne comme prévu.

La commande `kubectl run` pour créer un Pod

La syntaxe fondamentale pour créer un Pod avec `kubectl run` est la suivante :

kubectl run  --image= [options]

Les éléments clés sont :

  • `` : Le nom que vous souhaitez donner à votre Pod. Il doit être unique au sein de son Namespace.
  • `--image=` : L'image de conteneur que vous voulez exécuter. Cela peut être une image provenant de Docker Hub (comme `nginx`) ou d'un autre registre d'images (par exemple, `monregistre.com/monimage:v1`).

Une option cruciale pour s'assurer que `kubectl run` crée bien un Pod et non un Déploiement (son comportement par défaut dans certaines versions plus anciennes et contextes) est l'option `--restart`:

  • `--restart=Never` : Cette option indique explicitement à Kubernetes de créer un objet Pod simple, qui ne sera pas géré par un contrôleur supérieur comme un ReplicaSet ou un Déploiement. Si le conteneur s'arrête, le Pod passera à l'état `Succeeded` ou `Failed` et ne sera pas redémarré automatiquement par Kubernetes (conformément à la politique `Never`). C'est ce que nous utiliserons pour créer un Pod isolé.

D'autres options utiles peuvent inclure `--port=` pour spécifier le port que le conteneur écoute (cela ne l'expose pas automatiquement à l'extérieur du cluster), ou `--namespace=` pour créer le Pod dans un Namespace spécifique.

Exemple pratique : lancement d'un Pod Nginx

Mettons cela en pratique. Pour créer un Pod nommé `mon-pod-nginx` qui exécute la dernière image officielle de Nginx, ouvrez votre terminal configuré avec `kubectl` et lancez la commande suivante :

kubectl run mon-pod-nginx --image=nginx:latest --restart=Never

Après avoir exécuté cette commande, Kubernetes va effectuer plusieurs actions en arrière-plan :

  1. Il crée un objet Pod avec les spécifications demandées (nom, image).
  2. Le scheduler de Kubernetes choisit un Noeud approprié dans votre cluster pour héberger ce Pod.
  3. Le Kubelet sur le Noeud sélectionné reçoit l'instruction de créer le Pod.
  4. Si l'image `nginx:latest` n'est pas déjà présente sur le Noeud, le Kubelet la télécharge depuis Docker Hub.
  5. Le Kubelet lance le conteneur Nginx à l'intérieur du nouveau Pod.

Si tout se passe bien, vous devriez voir un message de confirmation similaire à : `pod/mon-pod-nginx created`.

Vérification et limites de `kubectl run`

Pour vérifier que votre Pod a bien été créé et est en cours d'exécution, utilisez la commande `kubectl get pods` :

kubectl get pods

# Sortie attendue (peut prendre quelques secondes) :
# NAME            READY   STATUS    RESTARTS   AGE
# mon-pod-nginx   1/1     Running   0          15s

Le statut `Running` et `READY 1/1` indiquent que le conteneur Nginx est démarré et opérationnel (selon les critères de base). Vous pouvez obtenir plus de détails avec `kubectl describe pod mon-pod-nginx`.

Il est important de comprendre que `kubectl run` avec `--restart=Never` crée un Pod "nu". Il n'est géré par aucun contrôleur de niveau supérieur. S'il échoue ou si le noeud sur lequel il s'exécute tombe en panne, il ne sera pas automatiquement recréé ou déplacé. De plus, le Pod n'est pas accessible depuis l'extérieur du cluster par défaut.

Bien que `kubectl run` soit pratique pour des tests rapides ou pour lancer des tâches ponctuelles, elle n'est pas recommandée pour gérer des applications en production. Pour cela, l'approche déclarative avec des manifestes YAML et l'utilisation d'objets comme les Déploiements et les Services sont indispensables pour la robustesse, la scalabilité et la maintenabilité.

Pour nettoyer et supprimer le Pod que nous venons de créer, utilisez la commande suivante :

kubectl delete pod mon-pod-nginx