Tutoriel Kubernetes - Un guide complet pour Kubernetes



Ce blog sur le didacticiel Kubernetes vous guidera à travers tous les concepts du système d'orchestration de conteneurs avec un outil pratique.

Kubernetes est une plateforme qui élimine les processus manuels impliqués dans le déploiement d'applications conteneurisées. Dans ce blog sur Kubernetes Tutorial, vous passerez en revue tous les concepts liés à cette solution de gestion multi-conteneurs.

Les sujets suivants seront traités dans ce didacticiel:





Maintenant, avant d'aller de l'avant dans ce blog, permettez-moi de vous présenter rapidement la conteneurisation.

Ainsi, avant la création des conteneurs, les développeurs et les testeurs ont toujours eu un différend entre eux. Cela se produisait généralement parce que ce qui fonctionnait du côté des développeurs ne fonctionnait pas du côté des tests. Les deux existaient dans des environnements différents. Désormais, pour éviter de tels scénarios, des conteneurs ont été introduits afin que les développeurs et les testeurs soient sur la même longueur d'onde.



La manipulation d'un grand nombre de conteneurs dans leur ensemble était également un problème. Parfois, lors de l'exécution de conteneurs, du côté du produit, peu de problèmes ont été soulevés, qui n'étaient pas présents au stade du développement. Ce type de scénarios a introduit le Container Orchestration System.

Avant de plonger dans le système d'orchestration, permettez-moi de lister rapidement les défis rencontrés sans ce système.



Tutoriel Kubernetes: défis sans l'orchestration de conteneurs

Défis sans l

Comme vous pouvez le voir dans le diagramme ci-dessus lorsque plusieurs services s'exécutent dans des conteneurs, vous souhaiterez peut-être mettre à l'échelle ces conteneurs. Dans les industries à grande échelle, c'est vraiment difficile à faire. En effet, cela augmenterait le coût de la maintenance des services et la complexité de les exécuter côte à côte.

Désormais, pour éviter de configurer les services manuellement et surmonter les défis, il fallait quelque chose de grand. C'est là que Container Orchestration Engine entre en scène.

Ce moteur nous permet d'organiser plusieurs conteneurs, de telle sorte que toutes les machines sous-jacentes soient lancées, que les conteneurs soient sains et distribués dans un environnement en cluster. Dans le monde d’aujourd’hui, il existe principalement deux moteurs de ce type: Gouverneurs & Essaim de dockers .

Tutoriel Kubernetes: Kubernetes vs Docker Swarm

Gouverneurs et Essaim de dockers sont les principaux outils d'orchestration de conteneurs sur le marché actuel. Donc, avant de les utiliser dans prod, vous devez savoir ce qu'ils sont exactement et comment ils fonctionnent.

De plus, dans le blog, je vais approfondir Kubernetes, mais pour en savoir plus sur Docker, vous pouvez cliquer sur .

Comme vous pouvez vous référer à l'image ci-dessus, Kubernetes, par rapport à Docker Swarm, possède une grande communauté active et permet la mise à l'échelle automatique dans de nombreuses organisations. De même, Docker Swarm a un cluster facile à démarrer par rapport à Kubernetes, mais il est limité aux capacités de l'API Docker.

Eh bien, mes amis, ce ne sont pas les seules différences entre ces meilleurs outils. Si vous souhaitez connaître les différences détaillées entre ces deux outils d'orchestration de conteneurs, vous pouvez cliquer sur

Vous souhaitez en savoir plus sur Kubernetes?

Si je pouvais choisir mon choix entre les deux, alors ce devrait être Kubernetes puisque les conteneurs doivent être gérés et connectés au monde extérieur pour des tâches telles que la planification, l'équilibrage de charge et la distribution.

Mais, si vous pensez logiquement, Docker Swarm serait une meilleure option, car il fonctionne au-dessus de Docker, n'est-ce pas? Si j'étais vous, j'aurais certainement été confus quant à l'outil à utiliser. Mais bon, Kubernetes est un leader incontesté sur le marché et fonctionne également sur des conteneurs Docker avec de meilleures fonctionnalités.

Maintenant que vous avez compris la nécessité de Kubernetes, c'est le bon moment, je vous le dis Qu'est-ce que Kubernetes?

Tutoriel Kubernetes: Qu'est-ce que Kubernetes?

est un open-source système qui gère le travail de planification des conteneurs sur un cluster de calcul et gère les charges de travail pour s'assurer qu'elles s'exécutent comme l'utilisateur le souhaite. Créée par Google, elle offre une excellente communauté et travaille avec brio avec tous les fournisseurs de cloud pour devenir un solution de gestion multi-conteneurs.

Tutoriel Kubernetes: Fonctionnalités de Kubernetes

Les fonctionnalités de Kubernetes sont les suivantes:

  • Planification automatisée: Kubernetes fournit un planificateur avancé pour lancer le conteneur sur les nœuds de cluster en fonction de leurs besoins en ressources et d'autres contraintes, sans sacrifier la disponibilité.
  • Capacités d'auto-guérison: Kubernetes permet de remplacer et replanifier les conteneurs lorsque les nœuds meurent. Il élimine également les conteneurs qui ne répondent pas à la vérification de l'état définie par l'utilisateur et ne les annonce pas aux clients tant qu'ils ne sont pas prêts à être diffusés.
  • Déploiements et restauration automatisés: Kubernetes déploie des modifications dans l'application ou sa configuration tout en surveillant l'état de santé de l'application pour s'assurer qu'il ne tue pas toutes vos instances en même temps. En cas de problème, avec Kubernetes, vous pouvez annuler la modification.
  • Mise à l'échelle horizontale et équilibrage de charge: Kubernetes peut augmenter et réduire l'application selon les exigences avec une simple commande, à l'aide d'une interface utilisateur ou automatiquement en fonction de l'utilisation du processeur.

Tutoriel Kubernetes: Architecture de Kubernetes

L'architecture Kubernetes comprend les principaux composants suivants:

  • Nœuds maîtres
  • Nœuds Worker / Slave

Je vais discuter de chacun d'eux un par un. Alors, commençons par comprendre le Nœud maître .

qu'est-ce que scipy en python

Nœud maître

Le nœud maître est responsable de la gestion du cluster Kubernetes. C'est principalement le point d'entrée pour toutes les tâches administratives. Il peut y avoir plus d'un nœud maître dans le cluster pour vérifier la tolérance aux pannes.

Comme vous pouvez le voir dans le diagramme ci-dessus, le nœud maître a divers composants tels que API Server, Controller Manager, Scheduler et ETCD.

  • Serveur API: Le serveur API est le point d'entrée de toutes les commandes REST utilisées pour contrôler le cluster.
  • Gestionnaire de contrôleur: Est un démon qui régule le cluster Kubernetes et gère différentes boucles de contrôle sans terminaison.
  • Planificateur: Le planificateur planifie les tâches sur les nœuds esclaves. Il stocke les informations d'utilisation des ressources pour chaque nœud esclave.
  • ETCD: ETCD est un magasin de valeurs-clés simple, distribué et cohérent. Il est principalement utilisé pour la configuration partagée et la découverte de services.

Nœuds Worker / Slave

Les nœuds de travail contiennent tous les services nécessaires pour gérer la mise en réseau entre les conteneurs, communiquer avec le nœud maître et affecter des ressources aux conteneurs planifiés.

Comme vous pouvez le voir dans le diagramme ci-dessus, le nœud de travail comporte divers composants tels que Docker Container, Kubelet, Kube-proxy et Pods.

  • Conteneur Docker: Docker s'exécute sur chacun des nœuds de travail et exécute les pods configurés
  • Kubelet: Kubelet obtient la configuration d'un pod à partir du serveur API et s'assure que les conteneurs décrits sont opérationnels.
  • Proxy de Cuba: Kube-proxy agit comme un proxy réseau et un équilibreur de charge pour un service sur un seul nœud de travail
  • Pods: Un pod est un ou plusieurs conteneurs qui s'exécutent logiquement ensemble sur des nœuds.

Si vous souhaitez une explication détaillée de tous les composants de l'architecture Kubernetes, vous pouvez vous référer à notre blog sur

Vous souhaitez obtenir une certification dans Kubernetes?

Tutoriel Kubernetes: Étude de cas Kubernetes

Oui ahoo! JAPON est un fournisseur de services Web dont le siège est à Sunnyvale, en Californie. Alors que l'entreprise cherchait à virtualiser le matériel, l'entreprise a commencé à utiliser Pile ouverte en 2012. Leur environnement interne a évolué très rapidement. Cependant, en raison des progrès de la technologie du cloud et des conteneurs, la société voulait que le capapossibilité de lancer des services sur différentes plateformes.

Problème: Comment créer des images pour toutes les plates-formes requises à partir d'un code d'application et déployer ces images sur chaque plate-forme?

Pour votre meilleure compréhension, reportez-vous à l'image ci-dessous. Lorsque le code est modifié dans le registre de code, les images bare metal, les conteneurs Docker et les images de machine virtuelle sont créés par des outils d'intégration continue, poussés dans le registre d'images, puis déployés sur chaque plateforme d'infrastructure.


Maintenant, concentrons-nous sur le flux de travail des conteneurs pour comprendre comment ils ont utilisé Kubernetes comme plate-forme de déploiement. Reportez-vous à l'image ci-dessous pour un aperçu de l'architecture de la plate-forme.

Les instances OpenStack sont utilisées, avec Docker, Kubernetes, Calico, etc. en plus pour effectuer diverses opérations telles que Container Networking, Container Registry, etc.

Lorsque vous avez un certain nombre de clusters, il devient alors difficile de les gérer, n'est-ce pas?

Donc, ils voulaient juste créer un cluster OpenStack de base simple pour fournir les fonctionnalités de base nécessaires à Kubernetes et rendre l'environnement OpenStack plus facile à gérer.

En combinant le flux de travail de création d'image et Kubernetes, ils ont construit la chaîne d'outils ci-dessous, ce qui facilite la transmission du code au déploiement.


Ce type de chaîne d'outils garantissait que tous les facteurs de déploiement en production tels que l'hébergement multiclient, l'authentification, le stockage, la mise en réseau, la découverte de services étaient pris en compte.

Voilà comment les gens, Yahoo! JAPON a construit une chaîne d'outils d'automatisation pour le déploiement de code «en un clic» sur Kubernetes fonctionnant sur OpenStack, avec l'aide de Google et Solinea .

Tutoriel des gouverneurs: pratique

Dans cette pratique, je vais vous montrer comment créer un déploiement et un service. J'utilise une instance Amazon EC2 pour utiliser Kubernetes. Eh bien, Amazon a mis au point Amazon Elastic Container Service pour Gouverneurs (Amazon EKS) , ce qui leur permet de créer des clusters Kubernetes dans le cloud très rapidement et facilement. Si vous souhaitez en savoir plus, vous pouvez vous référer au blog

Étape 1: Premier créer un dossier dans lequel vous allez créer votre déploiement et votre service. Après cela, utilisez un éditeur et ouvrir un fichier de déploiement .

mkdir handsOn cd handsOn vi Deploy.yaml

Étape 2: Une fois que vous avez ouvert le fichier de déploiement, mentionnez toutes les spécifications de l'application que vous souhaitez déployer. Ici, j'essaye de déployer un httpd application.

apiVersion: apps / v1 #Définit le type de version de l'API: Le paramètre Deployment #Kinds définit de quel type de fichier s'agit-il, ici, il s'agit des métadonnées de déploiement: name: dep1 # Stocke le nom de la spécification de déploiement: # Sous Spécifications, vous mentionnez tout les spécifications des réplicas de déploiement: 3 # Le nombre de répliques serait de 3 sélecteur: matchLabels: app: httpd # Le nom du libellé recherché est httpd template: metadata: labels: app: httpd # Le nom du modèle serait httpd spec: # Under Spécifications, vous mentionnez toutes les spécifications des conteneurs conteneurs: - nom: httpd # Le nom des conteneurs serait httpd image: httpd: dernière # L'image à télécharger est httpd: derniers ports: - containerPort: 80 #L'application serait exposé sur le port 80

Étape 3: Après avoir écrit votre fichier de déploiement, appliquez le déploiement à l'aide de la commande suivante.

kubectl apply -f Deploy.yaml

Ici -f est un nom d'indicateur utilisé pourtil fileNom.

Étape 4: Maintenant, une fois le déploiement appliqué, obtenez la liste des pods en cours d'exécution.

kubectl obtenir des pods -o de large

Ici, -o wide est utilisé pour savoir sur quel nœud le déploiement est en cours.

Étape 5: Après avoir créé un déploiement, vous devez maintenant créer un service. Pour cela, utilisez à nouveau un éditeur et ouvrez un espace vide un service. fichier yaml .

vi service.yaml

Étape 6: Une fois que vous ouvrez un fichier de service, mentionnez toutes les spécifications du service.

apiVersion: v1 #Définit le type de version de l'API: Le paramètre Service #Kinds définit de quel type de fichier s'agit-il, ici il s'agit des métadonnées du service: name: netsvc # Stocke le nom de la spécification du service: # Sous Spécifications, vous mentionnez toutes les spécifications pour le type de service: NodePort selector: app: httpd ports: -protocol: TCP port: 80 targetPort: 8084 #Target Le numéro de port est 8084

Étape 7: Après avoir écrit votre fichier de service, appliquez le fichier de service à l'aide de la commande suivante.

kubectl apply -f service.yaml

Étape 8: Maintenant, une fois que votre service est appliqué pour vérifier si le service est en cours d'exécution ou non, utilisez la commande suivante.

kubectl obtenir svc

Étape 9: Maintenant, pour voir les spécifications du service et vérifier de quel point de terminaison il s'agitlié à, utilisez la commande suivante.

comment changer le chemin java
kubectl décrire svc

Étape 10: Maintenant que nous utilisons l'instance amazon ec2, pour récupérer la page Web et vérifier la sortie, utilisez la commande suivante.

adresse IP curl

Si vous avez trouvé ce blog du didacticiel Kubernetes pertinent, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier.

Vous avez une question pour nous? Veuillez le mentionner dans la section des commentaires de ' Tutoriel Kubernetes »Et je vous répondrai.