Vous entendez beaucoup parler de Kubernetes mais vous ne savez pas ce qu'ils sont?
What is Kubernetes?
Kubernetes est un outil open-source qui prend en charge l'orchestration des conteneurs. Il automatise le déploiement de conteneurs, la mise à l'échelle continue et la réduction de l'échelle, l'équilibrage de la charge des conteneurs, etc.
Google a initialement développé Kubernetes sur le langage de programmation Go.
Actuellement, c'est le leader du marché de l'orchestration de conteneurs. Kubernetes est une plate-forme idéale pour héberger des applications de microservices qui évoluent de manière dynamique. Lorsque vous travaillez sur un environnement de production, Kubernetes est la plate-forme la plus préférée et la plus sûre pour l'orchestration de conteneurs.
Étant donné que dans un environnement de production, vous ne prévoyez aucun temps d'arrêt, votre cluster doit toujours être opérationnel.
Avec Google Cloud Platform (GCP), vous pouvez lancer Kubernetes en quelques clics. Il est pris en charge par d'autres fournisseurs de cloud, également comme AWS et Azure. Et, il y a plusieurs plateforme Kubernetes gérée disponible.
Why Kubernetes?
Auparavant, un combat entre développeurs et testeurs était une chose courante.
Les environnements étaient différents pour eux; ce qui fonctionnait sur le système du développeur ne fonctionnait pas sur le système des testeurs.
Maintenant que la plupart des organisations utilisent des conteneurs, les problèmes apparaissant en raison des différences d'environnement ne se produisent plus.
Mais organiser et gérer plusieurs conteneurs n'est pas non plus une tâche facile. Lorsque vous travaillez sur des applications dynamiques, augmentez / diminuez, le nombre de conteneurs est une chose normale. Faire de telles tâches manuellement peut être complexe et risqué. Par conséquent, un outil d'orchestration de conteneurs est nécessaire, et c'est pourquoi Kubernetes est nécessaire.
Kubernetes Features
Il y en a beaucoup, mais voici quelques-uns des meilleurs.
# Emballage automatique de bac
Kubernetes met en package votre application et place automatiquement des conteneurs en fonction de leurs besoins et des ressources disponibles
# Découverte de services et équilibrage de charge
Kubernetes attribue automatiquement aux conteneurs leurs adresses IP et un nom DNS aux conteneurs exécutant des opérations logiques. La fonction d'équilibrage de charge est également présente entre l'ensemble de conteneurs.
# Orchestration du stockage
Kubernetes monte automatiquement le système de stockage de votre choix. Cela peut être soit stockage local ou cloud public fournisseur tel qu'AWS.
# Auto-guérison
Chaque fois que Kubernetes se rend compte que l'un de vos conteneurs a échoué, il redémarrera lui-même ce conteneur et créera également un nouveau conteneur à la place de celui qui a planté. En cas de défaillance de votre nœud, les conteneurs s'exécutant sur ce nœud démarreront sur un autre nœud en cours d'exécution dans le cluster.
# Mise à l'échelle horizontale
Vous pouvez augmenter et réduire rapidement vos applications avec une simple commande. La commande simple peut être exécutée sur la CLI ou via le tableau de bord Kubernetes. La mise à l'échelle automatique est également possible, en fonction de l'utilisation du processeur, vos conteneurs seraient automatiquement augmentés ou réduits.
# Restauration et déploiement automatiques
Chaque fois qu'il y a une mise à jour de votre application, Kubernetes déploie progressivement ces modifications et mises à jour sur l'application ou ses configurations. Toutes les instances ne sont pas mises à jour en même temps, garantissant ainsi une haute disponibilité. Si quelque chose ne va pas, Kubernetes annulera immédiatement les modifications.
Kubernetes Terminologies
Avant de vous salir les mains, vous devez connaître régulièrement quelques terminologies utilisées dans Kubernetes.
# Cosse
Il représente un ou plusieurs conteneurs s'exécutant dans un cluster.
# Services
Une manière abstraite d'accéder au pod / à l'application.
# Espace de noms
Il est utilisé pour supprimer la collision de noms dans un cluster. Il prend en charge plusieurs clusters virtuels sur le même cluster physique.
# Nœud
Machine de travail Kubernetes.
# Grappe
Composé d'un groupe de nœuds exécutant des applications conteneurisées sur Kubernetes.
# Annotation
Une étiquette pour stocker les données requises par les ressources.
# Volume
C'est le répertoire de données qui contient les conteneurs d'accès aux pods.
# Jeu de répliques
Plusieurs répliques de pods en cours d'exécution.
# Libellé
Donner un nom aux objets Kubernetes afin qu'ils puissent être identifiés dans le système.
# kubelet
C'est un agent qui s'exécute sur chaque nœud et vérifie si les conteneurs s'exécutent dans les pods.
# KubectlName
Utilitaire de ligne de commande pour interagir avec le serveur d'API Kubernetes.
# Proxy Kube
Proxy réseau qui contient toutes les règles réseau sur chaque nœud du cluster.
Kubernetes and Docker
Vous vous demandez peut-être en quoi Kubernetes est différent de Docker. L'expression Kubernetes vs Docker peut être trompeuse.
Docker est une plate-forme qui regroupe le système d'exploitation, les bibliothèques et les applications dans un conteneur. Laissez-moi vous dire que Docker fait la même chose qu'il est censé faire dans Kubernetes. Mais lorsque vous travaillez uniquement avec Docker, tout est manuel. Vous devez démarrer et arrêter les conteneurs manuellement. Mais avec Kubernetes, tout est automatisé.
Kubernetes peut planifier des pods qui ont des conteneurs, Kubelet dit alors à Docker de démarrer ou d'arrêter les conteneurs. Kubelet dans Kubernetes est chargé de surveiller ces conteneurs et de collecter leurs informations sur le nœud maître. Donc, la différence fondamentale est qu'au lieu que les administrateurs disent à Docker quoi faire, dans Kubernetes, tout est automatisé.
Il existe un autre outil utilisé pour l'orchestration de conteneurs: Docker Swarm. Alors, quelle est la différence entre eux?
Kubernetes vs. Docker Swarm
Kubernetes | Docker Swarm |
L'installation est complexe | L'installation est simple |
Une plus grande communauté Open Source | Communauté plus petite par rapport à Kubernetes |
Peut orchestrer facilement des centaines de conteneurs | Bon pour orchestrer 10 à 20 conteneurs |
Le tableau de bord Kubernetes fournit une interface graphique | Pas d'interface graphique |
Prend en charge la mise à l'échelle automatique | Ne prend pas en charge la mise à l'échelle automatique |
Prise en charge des mises à jour progressives avec restauration automatique | Prend en charge les mises à jour progressives mais pas la restauration automatique |
Journalisation et surveillance disponibles intégrées | Nécessite une tierce partie comme ELK pour la journalisation et la surveillance |
Peut partager du volume avec des conteneurs dans le même pod | Peut partager le volume avec n'importe quel conteneur du cluster |
Conclusion
J'espère que vous avez maintenant une compréhension de base de ce qu'est Kubernetes et de son aide. Si vous êtes intéressé par DevOps ou que vous pensez y entrer, je vous suggère de prendre ceci fantastique cours Udemy pour apprendre Kubernetes.