Kubernetes
Kubernetes (K8s) est un orchestrateur conçu pour la gestion des conteneurs. Il a été initialement développé par Google, puis transféré à la Cloud Native Computing Foundation, devenant ainsi un projet Open-Source.
Les avantages d’utiliser Kubernetes sont multiples :
- Tout d’abord, la standardisation permet de déployer l’application sur n’importe quel fournisseur de cloud, évitant ainsi de dépendre d’un fournisseur spécifique.
- Ensuite, l’utilisation de conteneurs permet une optimisation en temps réel du nombre de conteneurs en fonction de la charge réelle, ainsi qu’une optimisation de la consommation des ressources CPU et RAM, ce qui se traduit par une réduction des coûts.
- Enfin, la scalabilité est améliorée grâce à la gestion efficace des ressources.
L’évolution du web et l’apparition de Kubernetes
Au fil des années, le fonctionnement du web a connu une évolution significative. Initialement, des serveurs physiques fonctionnaient en continu, et les développeurs mettaient à jour les fichiers directement sur ces serveurs pour faire évoluer les sites. Cependant, cette approche présentait des limitations. La base de données du site continuait de croître jusqu'à atteindre sa capacité maximale, entraînant l’arrêt du serveur et rendant le site inaccessible. De plus, les serveurs étaient parfois saturés lors de périodes de forte fréquentation, même avec l’utilisation de serveurs physiques plus puissants.
C’est à ce moment que les machines virtuelles sont apparues. L’idée était de regrouper plusieurs serveurs virtuels sur un même serveur physique. Les développeurs préparaient des machines virtuelles avec un système d’exploitation défini et y déployaient leur code. Cependant, cette approche nécessitait beaucoup de travail, car il fallait non seulement préparer les fichiers contenant le code, mais également créer et déployer des machines virtuelles, un processus long et lourd. De plus, la duplication de plusieurs machines virtuelles avec des systèmes d’exploitation complets augmentait la charge sur le serveur.
C’est là qu’intervient Docker. Cette technologie consiste à virtualiser uniquement la partie d’application nécessaire, sans inclure l’ensemble du système d’exploitation. Chaque partie de l’application est encapsulée dans un conteneur, permettant une mise à jour rapide de la partie nécessaire, généralement en quelques minutes.
Cependant, la question se pose : comment faire face à une demande élevée sur les conteneurs et les dupliquer dynamiquement pour faire évoluer le système ? C’est ici qu’intervient Kubernetes, un orchestrateur de conteneurs. Il est responsable du lancement, de l’arrêt et de la gestion du cycle de vie des conteneurs sur plusieurs machines. Kubernetes permet de scaler automatiquement en fonction de la demande des utilisateurs, créant ou supprimant des conteneurs pour garantir des temps de réponse satisfaisants.
Différence entre Docker et Kubernetes
Docker se concentre principalement sur la création et l’exécution de conteneurs.
Kubernetes se concentre sur l’orchestration des conteneurs à grande échelle. Il gère la distribution des conteneurs sur un cluster de machines, assure leur disponibilité, leur scalabilité, gère les mises à jour sans interruption de service et garantit une répartition équitable de la charge entre les différentes instances d’une application.
Les composants de Kubernetes
Master | Le serveur principal qui contrôle les nœuds et coordonne le cluster. Il gère les opérations du cluster, telles que la planification des déploiements, la configuration des ressources, etc. |
Nœud (ou Worker) | Une machine de travail qui exécute les pods qui lui sont attribués. |
Pod | Un environnement d’exécution qui peut contenir un ou plusieurs conteneurs Docker. Les conteneurs à l’intérieur du même pod partagent la même adresse IP, les mêmes ports et les mêmes volumes. |
Kubelet | Un composant s’exécutant sur les nœuds qui s’assure que les conteneurs spécifiés dans les pods sont en cours d’exécution et fonctionnent correctement. Si un nœud tombe, c’est le kubelet qui remonte l’information au master. |
Service | Un point d’entrée abstrait qui permet l’accès load balancé à un groupe de conteneurs identiques dans différents pods. Autrement dit, c’est une adresse IP virtuelle pour acheminer le trafic vers différents pods. Ils assurent également un équilibrage de charge pour ces pods. |
Comment fonctionne Kubernetes ?
1. L’équipe DevOps envoie des commandes de déploiement, scaling ou surveillance au serveur Master de Kubernetes.
2. Le serveur Master interprète ces commandes puis transmet les instructions aux noeuds concernés dans le cluster pour exécuter les tâches.
3. Les services Kubernetes acheminent le trafic vers les pods appropriés en fonction des règles de routage définies.
4. Le serveur Master alloue les ressources nécessaires au pod désigné pour qu’il puisse exécuter les tâches spécifiées.
5. Une fois que le serveur Master a planifié le pod sur un nœud, le Kubelet va ordonner à Docker de démarrer les conteneurs spécifiés dans le pod. Docker gère alors le cycle de vie de ses conteneurs, les démarrant ou les arrêtant selon les besoins.
6. Le Kubelet surveille en continu l’état des conteneurs via Docker sur le nœud où ils s’exécutent. Il rassemble ces informations, telles que l’état, les performances, les erreurs éventuelles, et les remonte au serveur Master pour une vue globale de l’état du cluster.
Aucune page ou chapitre n'a été ajouté à cet article.