VIRTUALISATION ET CLOUD COMPUTING | SALAHEDDINE.HEBABAZE CLoudHPC | ENSIAS Comp
VIRTUALISATION ET CLOUD COMPUTING | SALAHEDDINE.HEBABAZE CLoudHPC | ENSIAS Compte Rendu : Kubernetes Les objectifs de TP : • Installation et gestion de kubernetes • Application des configurations à partir des fichier yaml • Création des pods, réplication et déploiement sous kubernetes • Implémentation et la gestion d'un registre docker localement • Implémentation de monitoring system influxdB et chronograf via kubernetes Partie (1) : La Création de Cluster Kind et installation de Kubectl a.Téléchargement de kind Kind est un projet permettant de lancer un cluster kubernetes directement via Docker. # curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.8.1/kind-$(uname)-amd64 # chmod +x ./kind Print scr 1 : téléchargement de kind b.fichier de création de cluster my-cluster.yml Création de fichier de configuration my-cluster.yml pour la création de de cluster : 1 master et 2 worker : cat > my-cluster.yml <<EOF kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker EOF c.Création de cluster en ligne de commande : Lancer la création de cluster avec la commande suivante : # sudo ./kind create cluster --config my-cluster.yml Print scr 2 : Le cluster en processus de création • Vérifier la création de cluster # sudo ./kind get clusters Print scr 3: : Afficher les cluster kind d.Téléchargement de kubectl : # curl -LO https://storage.googleapis.com/kubernetes- release/release/v1.18.0/bin/linux/amd64/kubectl • Rendre le binaire kubectl exécutable. chmod +x ./kubectl • spécifier le contexte pour kubectl afin d'interagir avec le cluster kind : sudo kubectl cluster-info –context kind-kind Print scr 4 : : Vérification de tâche e.désactiver la mémoire swap : sudo swapoff -a f.afficher la version installée : # kubectl version Print scr 5 : afficher la version de kubectl Partie 2 : Play With Kubernetes a.Initialisez kubeadm sur le nœud maître : # sudo kubeadm init --pod-network-cidr=10.1.1.0/24 b.Installation de Chocominer : • Télécharger Chocominer sudo git clone https://git.nemunai.re/chocominer.git • lancer execution de Chocominer sudo docker-compose up Print scr 6: création des différents conteneurs • A partir du lien suivant : http://localhost:8888/sources/1/dashboards/1 Print scr 7 : l’interface de chronograf pour voir l’avancement de recherche de pépites • Augmenter le nombre des worker sudo docker-compose up -d --scale worker=2 Print scr 8: Vérification de tâche • Dans l'image suivante on aperçoit que le nombre de hash est doublé après doubler le nombre des worker Print scr 9 : Nombre des pépites après l'augmentation le nombre des worker Partie 3 : Découverte de Kubectl : a.l'option get : voir les informations de cluster sudo kubectl get node Print scr 10: Vérification de tâche usor@myhostname:~$ sudo kubectl get nodes -o wide Print scr 11: affiches les node avec ses adresses IP b.Kubectl Services : Print scr 12 : Afficher les services de de cluster en cours • Pour le moment nous n'avons qu'un service "CLUSTER-IP" qu'est l'adresse IP de service accessible en interne par les autres node de cluster • Pour afficher la liste des conteneurs actif on tape la commande suivante : # kubectl get pods Print scr 13 : aucun pod dans le name space par défaut Aucune ressource trouvée dans le namespace par default. • Pour cela on affiche la liste des 'namespaces' disponible avec la commande : sudo kubectl get namespaces Print scr 14 : Afficher la liste des namespaces Pour voire les conteneurs d'un autre espace de noms : Kubectl -n kube-system get pods Print scr 15 : afficher les pods de kube-system c.Lancer un pod : • Pour lancer une image en pod en utilise la commande suivante : sudo kubectl run pingpong --image alpine ping 1.1.1.1 Print scr 16 : Lancement de POD • Vérification de tâche par la commande suivante qui permet d'afficher la liste des pods : Print scr 17: Lister touts les Pods • Pour avoir plus d'informations : Kubectl get all Print scr 18: Plus des détails sur les Pods d.Sortie d'un conteneur : • pour affiche que passe-t-il (logs) dans le pod on tape la commande suivante : Kubectl logs deploy/pingpong Print scr 19: Voir le log de pod pingpong a. Pour afficher un pod en particulier : on ajoute l'option -f et le nom complet de pod pour suivre les logs en direct Print scr 20 :affiche les logs de Pod spécifié e.Mise à l'échelle : Pour lancer 8 pings en parallèle on modifier la tâche de déploiement comme ce suit : Kubectl scale deploy/pingpong –replicas 8 Print scr 21 : création des réplicas b. Kubernetes duplique le pod existant Print scr 22 : Les pods dupliqués c. Si on essaye de tue un pod avec la commande suivante : kubectl delete pod pingpong-58558f7d47-zc62j le pod se recrée une nouvelle fois d. pour supprimer complètement le pod : kubectl delete deploy/pingpong Print scr 23 : Le pod est supprimé f.Exposer le conteneur : Pour tester l'exposition on a déployé l'image youp0m avec la commande suivante : kubectl create deployment youp0m --image=nemunaire/youp0m e. commençons par créer un service ClusterIP : kubectl expose deployment youp0m –port 8080 Print scr 24 : exposition de pod sur le port 8080 Alors un nouveau service de type Cluster IP est lancée, on vérifie la tache par la commande suivantes : Print scr 25 : afficher les services de cluser g.Cookies dans Kube f. Déploiement d'un registre Docker : Kubectl create deployment registry –image=registry Print scr 26 déploiement de l'image de registre kubectl expose deploy/registry --port=5000 --type=NodePort Print scr 27: exposer le registre local g. Pour tester la création de registre ,on va créer deux variables d'environnement : NODEPORT qui stockera le port de service registre et le variable REGISTRY qui sera notre registre local. NODEPORT=$(kubectl get svc/registry -o json | jq .spec.port[0].nodePort) h. Verification : Print scr 28 : Vérifier la valeur de NODEPORT REGISTRY=127.0.0.1/:$NODEPORT i. Télécharger l'image busybox Docker pull busybox j. Créer un tag pour l'image Docker tag busybox $REGISTRY/busybox k. Stocker l'image dans notre registre local Docker push $REGISTRY/busybox l. Deployer l'image chronograf kubectl create deployment chronograf --image=chronograf Print scr 29 : afficher les Pods créer – l'image est bien déployée Partie 4 : Lançons les images standards a. déployer influxdp à partir d'un fichier yaml : kubectl apply -f https://virli.nemunai.re/influxdb.yaml Print scr 30 : afficher les Pods crées - l'image est bien déployé à partir de le fichier yaml b. Notre Application: Créer trois services hasher , rng et worker avec les commandes suivantes: TAG=v0.1 kubectl create deployment hasher –image=nemunaire/hasher:$TAG kubectl create deployment rng –image=nemunaire/rng:$TAG Kubectl create deployment worker –image=nemunaire/worker:$TAG Print scr 31 : Les pods sont bien crées c. Exposition des Pods : kubectl expose deployment influxdb --port 8086 Print scr 32 : exposition de influxdb sur le port 8086 Print scr 33 : exposé le pod rng sur le port 80 Print scr 34 : exposé le pod rng hasher le port 80 d. Exposé chronograf sur le port 30001 kubectl create service nodeport chronograf --tcp=8888 --node-port=30001 Print scr 35 : le service est assigné au port 30001 e. Accès Web : A partir de l'interface web on peut accéder au chronograf interface on tapant l'adresse IP de worker chargé d'exécuter le pod chronograf dans notre exemple l'adresse ip de kind-worker2 est 172.18.0.3 avec le port 30001. f. Répliquer Les Pods et augmenter la charger : kubectl scale deploy/worker --replicas=4 Print scr 36 : création de 4 réplication à partir worker Print scr 37 : les quatre réplication sont crées g. création de Daemon sets : • On a créé un daemon depuis le fichier daemonset. yaml : kubectl apply -f https://k8s.io/examples/controllers/daemonset.yaml Print scr 38 : la commande pour déployer l'image h. Daemonset rng : On export la configuration existante pour réaliser un Daemonset de pod rng kubectl get deploy/rng -o yaml --export >rng.yml Print scr 39 : extrait de fichier rng.yml • Dans le fichier rng.yml on modifier le type décrit dans le champ kind en Daemonset • Après on exécute la commande suivante pour créer le daemonset pour rng pod i. Kubernetes Dashboard On peut vérifier aussi la création des Pods, réplicas et daemon ..etc à partir de l'interface Web Print scr 40 : Kubernetes Dashboard j. Afficher les daemons Print scr 41 : List des Daemonsets k. Trop de pods : On aperçoit l'exécution de plusieurs Pods sachant que j'ai créé 4 réplicas de worker Print scr 42 : Liste des Pods rng crées l. les pépites Print scr 43 : les pépites Chronograf après d'augmenter le nombre des réplicas Conclusion : C'était un TP très riche au niveau d'informations et de nouveautés c'était ma première occasion d'affronter le fameux kubernetes et connaitre plusieurs notions comme pod, control plan ,worker et cluster ..etc. les questions que je pose actuellement sont : 1. Est-il possible de migrer tout le cluster avec ses pods et services et toutes sa configuration vers une autre machine . 2. Comment le cluster manager distribué les ressources matérielles au nodes, est-il possible d'élaboré une politique de quota pour chaque node et pod 3. Comment mettre en place le cluster en utilisant des machines réelles comme workers. uploads/s3/ compte-rendu-kubernetes 1 .pdf
Documents similaires










-
25
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 16, 2021
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 1.0987MB