Vous êtes sur la page 1sur 14

Kubernetes par la pratique

Ces activités pratiques comportent deux parties principales qui sont :

Partie 1 : Kubernetes sur Docker Desktop


Partie 2 : Kubernetes sur Microsoft Azure

1. Kubernetes sur Docker Desktop

Docker Desktop est le moyen le plus simple d'exécuter Kubernetes sur votre machine
locale - il vous offre un cluster Kubernetes entièrement certifié et gère tous les
composants pour vous.

Dans cet atelier, vous apprendrez à configurer Kubernetes sur Docker Desktop et à
exécuter une application de démonstration simple. Vous acquerrez de l'expérience en
travaillant avec Kubernetes.

Avant de commencer ce TP, un petit rappel sur l’architecture de - Kubernetes et Kubectl


1. Installez Docker Desktop (si ce n’est pas encore fait)

2. Activer Kubernetes
Assurez-vous que Docker Desktop est en cours d'exécution - dans la barre des tâches
de Windows et la barre de menus sur Mac, vous verrez le logo baleine de
Docker. Cliquez sur la baleine et sélectionnez Paramètres :

Un nouvel écran s'ouvre avec toutes les options de configuration de Docker


Desktop. Cliquez sur Kubernetes et cochez la case Activer Kubernetes :
C'est ça! Docker Desktop téléchargera toutes les images Kubernetes en arrière-plan et
démarrera tout. Lorsqu'il est prêt, vous verrez deux voyants verts en bas de l'écran
des paramètres indiquant Docker en cours d'exécution et Kubernetes en cours
d'exécution .

L'étoile dans la capture d'écran montre le bouton Réinitialiser le cluster


Kubernetes , qui est l'une des raisons pour lesquelles Docker Desktop est la
meilleure des options Kubernetes locales. Cliquez dessus et cela réinitialisera
votre cluster à une nouvelle installation de Kubernetes.

3. Vérifiez votre cluster Kubernetes


Si vous avez déjà travaillé avec Docker, vous avez l'habitude de gérer des conteneurs
avec les lignes de commande docker et docker-compose.

Kubernetes utilise un outil différent appelé kubectl pour gérer les applications - Docker
Desktop installe kubectl également pour vous.

Avant de manipuler les commandes de kubectl, rappelons l’architecture de Kubernetes


(lien)

Les commandes kubectl sont résumés comme suit :


- Vérifiez l'état de votre cluster Docker Desktop :

kubectl get nodes


Vous devriez voir un seul nœud (worker node/machine virtuelle) dans la sortie
appelé docker-desktop. Il s'agit d'un cluster Kubernetes complet, avec un nœud unique
qui exécute l'API Kubernetes et vos propres applications.

Pour s’assurer du bon fonctionnement de votre cluster Kubernetes, commencez par la


création d’un déploiment moyennant les commandes en invite de commandes (sans
fichier.yaml)

Question : Quels commandes exécutez-vous pour afficher les pods et s’assurer que le
déploiment a été créé ?
4. Exécutez une application familière

N.B : avant d’entamer cette partie, vous devez « pusher » l’image de


votre microservice produit que vous avez développé comme
suite :

Avant de commencer sachez que c’est possible de déployer une


application sur Kubernetes en utilisant un fichier de configuration
avec l’extension « .yml » comme suite :

Exemple :
Hints (pour ceux qui n’ont toujours pas dockeriser le
microservice produit)

Créer l’image docker de l’app

Pusher l’image :

Maintenant que votre image existe sur Docker hub c’est


possible de la télécharger à partir de n’importe quelle
machine exécutant docker.

- Then, what is next ? ➔ Déploiment de votre App sur


Kubernetes Desktop en utilisant un fichier « .yaml » cette
fois-ci

Fichier « deployment-example.yml »
apiVersion: apps/v1
kind: Deployment
metadata:
name: full-stack-deuxieme-annee
labels:
app: web
spec:
selector:
matchLabels:
app: web
replicas: 5
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: web
spec:
containers:
- name: microservice-produit
image: souaddock/product-full-stack:v1
ports:
- containerPort: 5000

Structure du ficher « .yml »

5. Vérifiez les composants de l'application


Kubernetes exécute des conteneurs pour vous, donc au lieu de les exécuter
explicitement avec docker container run, vous décrivez le résultat souhaité dans un
fichier YAML et lorsque vous exécutez kubectl apply, Kubernetes démarre tous les
conteneurs.

Les conteneurs dans Kubernetes sont enveloppés dans un autre objet


appelé pod . Jetez un œil aux pods de l'application test full-stack-deuxieme-annee

Vous devriez voir beaucoup de pods.


Lorsque la READY colonne indique 1/1 pour chaque pod, cela signifie que tous les
conteneurs sont en cours d'exécution.

Vous pouvez avoir plusieurs conteneurs dans un seul pod dans Kubernetes, et
ils partagent le même réseau et le même environnement de calcul.

6. Utilisez l'application

Notion de service :
Service

Une application est susceptible d’être déployée au sein de plusieurs Pods répartis sur
plusieurs nodes (dans l’exemple nous avons 5). Une première approche pour
communiquer avec cette application serait d’utiliser les adresses IP des Pods (5 dans
notre cas). Cependant, cette approche présente de nombreuses contraintes car il faut
constamment être capable de récupérer une ou plusieurs adresses IP. En effet, si
un Pod est supprimé puis redéployé alors son adresse IP change.
 Pour pallier à cette problématique, Kubernetes dispose d’un objet
appelé Service qui permet d’associer, grâce à des LabelSelector (des labels pour
identifier des objets), à un déploiement (c’est-à-dire un ensemble commun
de Pods) une adresse IP et une URL (voir l’image ci-contre).
La question qui se pose comment peut-on être surs que notre microservice
s’exécute correctement sur les 5 Pods (ou au moins l’un des 5 😊 ).

On copie l’ID de l’un des Pods (exécutant le même microservice produit) et on


utilisant le le port forwarding comme suite :
Accédez à localhost:8088/items et vous devriez voir l'application classique :

C'est votre microservice produit que vous avez développé en Node.js qui lit les données
de votre DB MongoDB Atlas.

Tout s'exécute dans des conteneurs via Kubernetes.


7. Vérifiez la résilience
Kubernetes s'assure que les conteneurs fonctionnent pour maintenir votre application au
niveau de service que vous avez demandé dans le fichier YAML (5 copies de
l’application). Ce sont tous des conteneurs Docker que vous pouvez également gérer
avec la docker ligne de commande.

Arrêtez l’un des 5 pods/conteneurs sur docker desktop

Revenez sur l'application de résultats dans votre navigateur à l'adresse


http://localhost:8088/items et vous verrez qu'elle fonctionne toujours. Kubernetes a vu
que le conteneur avait été arrêté et a immédiatement commencé un remplacement.

➔ Kubernetes s'assure que l'application en cours d'exécution correspond toujours à


l'état souhaité dans le fichier YAML de l'application.

Questionnaire
Merci de répondre aux questions suivantes.
Question 0

Que fait Kubernetes ? Sélectionnez une seule option

• Installe Docker et configure un cluster sur plusieurs machines virtuelles

• Gère les conteneurs et autres ressources définies dans un fichier YAML

• Crée des images de conteneur sur un cluster de machines

question 1

Comment travaillez-vous avec l'API Kubernetes ? Sélectionnez une seule


option

• Avec la commande kubectl, installée avec Docker Desktop

• Avec la commande docker, installée avec Docker Desktop

• Avec la commande kubeadm, que vous pouvez télécharger depuis GitHub

question 2

Comment Kubernetes regroupe-t-il les conteneurs ? Sélectionnez une seule


option
• Dans un cluster, où tous les conteneurs sont déployés sur la même VM

• Dans un service, où tous les conteneurs partagent le même espace de noms réseau

• Dans un pod, où tous les conteneurs partagent le même réseau et le même


environnement de calcul

Partie 2 : Kubernetes sur Microsoft Azure

2.1 Implement Azure Container Instances

2.2 Implement Azure Kubernetes Service

Vous aimerez peut-être aussi