Votre premier laboratoire Kubernetes

KubernetesKubernetesBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Bienvenue dans votre premier laboratoire Kubernetes! Ce laboratoire vous présentera Kubernetes, un système puissant pour la gestion d'applications conteneurisées. À la fin de ce laboratoire, vous aurez créé et interagi avec votre premier déploiement Kubernetes.

Ne vous inquiétez pas si vous êtes nouveau dans le domaine des conteneurs ou de l'orchestration - nous expliquerons chaque concept au fur et à mesure. Commençons notre voyage dans le monde de Kubernetes!

Note : Ce laboratoire nécessite le téléchargement d'images, mais les utilisateurs Free ne peuvent pas accéder à Internet depuis l'environnement de laboratoire. Ce laboratoire est réservé aux utilisateurs Pro.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("Delete") kubernetes/BasicCommandsGroup -.-> kubernetes/run("Run") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/exec("Exec") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/port_forward("Port-Forward") subgraph Lab Skills kubernetes/initialization -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/get -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/create -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/delete -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/run -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/describe -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/exec -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/logs -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} kubernetes/port_forward -.-> lab-391133{{"Votre premier laboratoire Kubernetes"}} end

Démarrage de votre cluster Kubernetes

Nous allons commencer par créer un cluster Kubernetes local en utilisant Minikube. Minikube vous permet d'exécuter un cluster Kubernetes mono - noeud sur votre ordinateur, idéal pour l'apprentissage et le développement.

Tout d'abord, ouvrez votre terminal. Vous devriez être dans le répertoire /home/labex/project. Si vous n'êtes pas sûr, vous pouvez vous déplacer dans ce répertoire en tapant :

cd /home/labex/project

Maintenant, démarrons le cluster Minikube :

Note : Les utilisateurs Free ne peuvent pas se connecter à Internet, donc Minikube est déjà démarré au démarrage du laboratoire. Vous pouvez sauter cette étape. Passez à la version Pro pour pratiquer le démarrage du cluster vous - même.

Réservé aux utilisateurs Pro
minikube start
Initialisation du cluster Minikube

Cette commande initialise un cluster Kubernetes sur votre machine locale. Voici ce qui se passe en coulisse :

  1. Minikube crée une machine virtuelle (VM) sur votre ordinateur.
  2. Il installe et configure Kubernetes à l'intérieur de cette VM.
  3. Il configure le réseau pour que votre ordinateur puisse communiquer avec le cluster.

Ce processus peut prendre quelques minutes. Vous verrez beaucoup de messages de sortie pendant que Minikube travaille. Ne vous inquiétez pas si vous ne comprenez pas tout - l'essentiel est d'attendre un message indiquant "Done!" à la fin.

Création de votre premier déploiement

Maintenant que notre cluster est en cours d'exécution, créons notre premier déploiement Kubernetes. Un déploiement est un objet Kubernetes qui gère un groupe de pods identiques. (Ne vous inquiétez pas, nous expliquerons rapidement ce qu'est un pod!)

Nous allons créer un déploiement qui exécute un seul conteneur de serveur web NGINX. NGINX est un serveur web populaire que nous utiliserons pour cet exemple.

Exécutez cette commande :

kubectl create deployment hello-kubernetes --image=nginx:latest --port=80

Décortiquons cette commande :

  • kubectl est l'outil en ligne de commande pour interagir avec Kubernetes.
  • create deployment indique à Kubernetes de créer un nouveau déploiement.
  • hello-kubernetes est le nom que nous donnons à notre déploiement.
  • --image=nginx:latest spécifie que nous voulons utiliser la dernière version de l'image Docker NGINX.
  • --port=80 indique à Kubernetes que le conteneur écoutera sur le port 80 (le port standard pour le trafic web).

Après avoir exécuté cette commande, vous devriez voir :

deployment.apps/hello-kubernetes created

Cela signifie que Kubernetes a créé avec succès votre déploiement. Mais qu'a - t - il exactement fait?

  1. Kubernetes a téléchargé l'image Docker NGINX.
  2. Il a créé un pod - un groupe d'un ou plusieurs conteneurs - et a démarré le conteneur NGINX à l'intérieur.
  3. Il a configuré le réseau pour que le pod puisse être accessible sur le port 80.

Inspection de votre déploiement

Maintenant que nous avons créé un déploiement, examinons de plus près ce que Kubernetes a mis en place pour nous.

Tout d'abord, vérifions l'état de notre déploiement :

kubectl get deployments

Vous devriez voir quelque chose comme ceci :

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
hello-kubernetes   1/1     1            1           2m

Ces informations nous indiquent :

  • READY : 1/1 signifie qu'un pod est prêt sur un pod souhaité.
  • UP-TO-DATE : 1 signifie qu'un pod exécute la dernière configuration.
  • AVAILABLE : 1 signifie qu'un pod est disponible pour gérer le trafic.

Ensuite, examinons les pods créés par notre déploiement :

kubectl get pods

Vous devriez voir quelque chose comme :

NAME                                READY   STATUS    RESTARTS   AGE
hello-kubernetes-6b89d599b9-x7tpv   1/1     Running   0          3m

Le nom exact du pod sera différent, mais vous devriez voir un pod avec un statut "Running" (En cours d'exécution). Ce pod contient notre conteneur NGINX.

Si vous ne voyez pas de pod en cours d'exécution, attendez une minute et réessayez. Kubernetes peut encore être en train de créer le pod ou de télécharger l'image NGINX.

Pour obtenir des informations plus détaillées sur notre pod, exécutez :

kubectl describe pod hello-kubernetes-6b89d599b9-x7tpv

Note : Remplacez hello-kubernetes-6b89d599b9-x7tpv par le nom de votre pod tel qu'il apparaît dans la sortie de kubectl get pods.

Cette commande affichera beaucoup d'informations. Ne vous inquiétez pas de tout comprendre pour l'instant. Voici les éléments clés à noter :

  • Status : Doit être "Running" (En cours d'exécution)
  • IP : L'adresse IP interne du pod
  • Containers : Informations sur le conteneur NGINX en cours d'exécution dans le pod

Si vous voyez des erreurs dans cette sortie, elles peuvent vous aider à diagnostiquer les problèmes liés à votre pod.

Accès à votre application

Maintenant que notre déploiement est en cours d'exécution, accédons au serveur web NGINX que nous avons déployé.

Dans un environnement Kubernetes typique, nous créerions un Service pour exposer notre déploiement au réseau. Pour simplifier dans cet environnement local, nous utiliserons plutôt le transfert de port (port forwarding).

Exécutez cette commande :

kubectl port-forward $(kubectl get pods -o name) 8080:80

Cette commande effectue les actions suivantes :

  • $(kubectl get pods -o name) récupère le nom de notre pod.
  • 8080:80 indique à Kubernetes de transférer le trafic du port 8080 de votre machine locale vers le port 80 dans le pod.

Vous ne verrez aucune sortie, mais la commande continuera de s'exécuter. C'est normal!

Maintenant, ouvrez une nouvelle fenêtre de terminal et exécutez :

curl http://localhost:8080
Affichage de la page d'accueil NGINX

Vous devriez voir du contenu HTML - il s'agit de la page d'accueil NGINX!

Si vous ne voyez pas le HTML :

  • Assurez-vous que la commande de transfert de port est toujours en cours d'exécution dans l'autre terminal.
  • Vérifiez que vous avez correctement tapé la commande curl.
  • Essayez d'accéder à http://localhost:8080 dans un navigateur web si curl ne fonctionne pas.

Pour arrêter le transfert de port, revenez à la fenêtre de terminal d'origine et appuyez sur Ctrl+C.

Nettoyage des ressources

Bravo! Vous avez réussi à déployer et à accéder à une application sur Kubernetes. Maintenant, nettoyons nos ressources.

Tout d'abord, supprimons notre déploiement :

kubectl delete deployment hello-kubernetes

Vous devriez voir :

deployment.apps "hello-kubernetes" deleted

Cette commande indique à Kubernetes de supprimer le déploiement et toutes les ressources associées, y compris le pod.

Vérifions que le déploiement et le pod ont été supprimés :

kubectl get deployments
kubectl get pods

Les deux commandes devraient retourner "No resources found in default namespace." (Aucune ressource trouvée dans l'espace de noms par défaut).

Si vous voyez toujours des ressources, attendez un moment et réessayez. Kubernetes peut encore être en train de les supprimer.

Enfin, arrêtons le cluster Minikube :

minikube stop

Cela arrête la machine virtuelle Minikube, mais conserve l'état du cluster sur votre machine. Vous pouvez le redémarrer plus tard avec minikube start.

Si vous souhaitez supprimer complètement le cluster Minikube, vous pouvez exécuter minikube delete. Cependant, ce n'est pas nécessaire pour le moment.

Résumé

Félicitations! Dans ce laboratoire, vous avez franchi vos premiers pas avec Kubernetes. Vous avez appris à :

  1. Démarrer un cluster Kubernetes local en utilisant Minikube
  2. Créer un déploiement en utilisant kubectl
  3. Inspecter votre déploiement et les pods qu'il crée
  4. Accéder à votre application déployée en utilisant le transfert de port (port forwarding)
  5. Nettoyer vos ressources et arrêter votre cluster

Ce sont des compétences fondamentales qui constituent la base du travail avec Kubernetes. Au fur et à mesure de votre apprentissage, vous vous appuierez sur ces bases pour créer des applications plus complexes et comprendre des concepts Kubernetes plus avancés.

N'oubliez pas que Kubernetes est un système puissant et complexe. Il est normal que certains concepts ne soient pas encore clairs - apprendre Kubernetes est un parcours. Continuez à pratiquer, et vous développerez progressivement une compréhension plus approfondie. Bonne chance dans votre aventure d'apprentissage de Kubernetes!