Qu'est-ce qu'un cluster Kubernetes ?
Un cluster Kubernetes (K8s) est un groupe de nœuds informatiques, ou machines de travail, qui exécutent des applications conteneurisées. La conteneurisation est un processus d'exécution et de déploiement logiciel qui regroupe le code d'une application avec tous les fichiers et bibliothèques dont elle a besoin pour s'exécuter sur n'importe quelle infrastructure. Kubernetes est un logiciel d'orchestration de conteneurs open source qui vous permet de gérer, de coordonner et de planifier des conteneurs à grande échelle. Kubernetes place les conteneurs dans des pods et les exécute sur des nœuds. Un cluster Kubernetes contient au minimum un nœud principal exécutant un pod de conteneurs et un plan de contrôle qui gère le cluster. Lorsque vous déployez Kubernetes, vous exécutez essentiellement un cluster Kubernetes.
Quels sont les principes fondamentaux de Kubernetes ?
Pour comprendre un cluster Kubernetes, vous devez d'abord comprendre les principes fondamentaux de la conteneurisation avec Kubernetes.
Un conteneur est une application unique ou un microservice packagé avec ses dépendances, qui peut être exécuté en tant qu'environnement autonome et en tant qu'application intégrée. Les applications modernes ont adopté une architecture de microservices distribuée dans laquelle chaque application comprend des centaines, voire des milliers de composants logiciels distincts qui s'exécutent indépendamment. Chaque composant (ou microservice) exécute une seule fonction indépendante pour améliorer la modularité du code. En créant des conteneurs indépendants pour chaque service, les applications peuvent être déployées et distribuées sur un certain nombre de machines. Vous pouvez augmenter ou réduire les charges de travail individuelles des microservices et les capacités de calcul afin d'optimiser l'efficacité des applications.
Kubernetes est un logiciel open source d'orchestration de conteneurs qui simplifie la gestion des conteneurs à grande échelle. Il peut planifier, exécuter, démarrer et arrêter des conteneurs et automatiser les fonctions de gestion. Les développeurs bénéficient des avantages de la conteneurisation à grande échelle sans frais d'administration.
Examinons ensuite certains concepts fondamentaux de Kubernetes.
Pod
Un pod est l'unité déployable standard sous Kubernetes. Les pods contiennent un ou plusieurs conteneurs et, au sein du pod, les conteneurs partagent les mêmes ressources système, telles que le stockage et la mise en réseau. Chaque pod reçoit une adresse IP unique.
Les contenants contenus dans une nacelle ne sont pas isolés. Imaginez un pod comme une machine virtuelle (VM), avec des conteneurs similaires aux applications qui s'exécutent sur la machine virtuelle. Les pods et les groupes de pods peuvent être organisés en y attachant des étiquettes d'attribut, telles que l'étiquetage « dev » ou « prod » pour le type d'environnement.
Nœud
Un nœud est une machine qui exécute des pods. Il peut s'agir d'un serveur physique ou virtuel, tel qu'une instance Amazon EC2. Les composants d'un nœud incluent :
- Kubelet pour la gestion des nœuds et des conteneurs
- Kube-proxy pour un proxy réseau
- Temps d'exécution du conteneur
Un environnement d'exécution de conteneur compatible doit être installé sur le nœud pour exécuter des conteneurs. Kubernetes prend en charge plusieurs environnements d'exécution de conteneurs, tels que l'interface Kubernetes Container Runtime et le conteneur.
Ensemble de répliques et déploiement
Un pod est un artefact autonome et lorsque son nœud tombe en panne, il ne redémarre pas automatiquement. Si un ou plusieurs pods sont regroupés dans un ensemble de répliques, dans Kubernetes, vous pouvez désigner des ensembles de répliques qui seront toujours exécutés sur plusieurs nœuds. Cela est essentiel pour augmenter et réduire la taille et garantir la continuité des applications et des services.
Un déploiement est l'objet de gestion de Kubernetes qui permet de déployer une application, ainsi que de mettre à jour ou d'annuler l'application sans la mettre hors ligne.
Service et entrée
Utilisez un service Kubernetes pour exposer un pod ou un groupe de pods sur le réseau, via un point de terminaison, pour une interactivité conforme aux règles de communication réseau standard. Pour l'accès au trafic Internet public, une entrée Kubernetes est associée à un service, qui est ensuite lié à un ou plusieurs pods.
Quels sont les composants du cluster Kubernetes ?
Un cluster Kubernetes est un groupe d'un ou de plusieurs nœuds avec des pods en cours d'exécution. Au sein du cluster, le plan de contrôle Kubernetes gère les nœuds et les pods.
Les composants du plan de contrôle incluent :
- Serveur d'API Kubernetes (kube-apiserver) qui gère les communications au sein et vers le cluster
- Stockage (etcd) pour enregistrer l'état persistant du cluster
Scheduler (kube-scheduler) pour gérer les ressources Kubernetes du nœud et des pods suivants
Les autres composants incluent un gestionnaire de contrôleurs pour le contrôle des nœuds et des tâches (kube-controller-manager) et un gestionnaire de contrôleurs cloud pour l'intégration à une infrastructure de cloud public spécifique au fournisseur (cloud-controller-manager).
Les conteneurs n'ayant pas de stockage permanent, les applications doivent stocker des données qui persistent. Les pods peuvent également nécessiter l'accès à des données partagées. Des volumes persistants peuvent être ajoutés à un cluster en tant que stockage, référencés dans le cluster de la même manière qu'un nœud.
Comment les développeurs travaillent-ils avec le cluster Kubernetes ?
Les développeurs doivent d'abord télécharger et installer Kubernetes sur un nœud maître et ses nœuds de travail. Ils peuvent ensuite déployer le cluster sur des machines physiques ou virtuelles, localement, dans un centre de données ou dans le cloud.
Installation
Pour démarrer facilement avec les machines virtuelles Linux, sur le nœud principal de votre choix (machine virtuelle), installez d'abord :
- Docker ou tout autre logiciel de conteneurisation.
- Clé de dépôt et référentiel de code de Kubernetes.
- Package kubeadm pour l'amorçage du cluster.
- Package kubelet pour la coordination des nœuds.
- Package kubectl pour la ligne de commande du cluster.
Exécutez le processus sur chacun des autres nœuds de travail désignés.
Initialisation du cluster
Pour initialiser un cluster, exécutez la commande kubeadm init sur le nœud maître. Vous devez ajouter un fichier de configuration kube et déployer la mise en réseau des pods, généralement à l'aide d'un fichier YAML, avant que le cluster ne soit prêt à fonctionner. La commande kubeadm init génère une commande join, qui peut être copiée et collée dans les lignes de commande des autres nœuds de travail de la machine virtuelle. Cela permet à chaque nœud de travail de rejoindre le cluster.
Travailler avec Kubernetes
Grâce au tableau de bord Kubernetes UI, les déployeurs peuvent créer et déployer des applications sur le cluster. Pour un tableau de bord d'interface utilisateur Kubernetes, exécutez la commande proxy kubectl sur la machine principale. L'interface utilisateur sera ensuite disponible sur http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.
Qu'est-ce que la gestion des clusters Kubernetes ?
La gestion des clusters Kubernetes est le terme désignant la gestion de plusieurs clusters Kubernetes à grande échelle. Prenons l'exemple d'un environnement de développement : l'équipe peut avoir besoin de clusters de test, de développement et de production qui s'exécutent chacun sur plusieurs machines physiques et virtuelles distribuées sur site et basées sur le cloud.
Pour gérer simultanément plusieurs types de clusters, vous devez être en mesure d'effectuer des opérations de cluster telles que la création et la destruction, les mises à jour in situ, la maintenance, la reconfiguration, la sécurité, la génération de rapports sur les données des clusters, etc. La gestion multi-clusters peut être réalisée grâce à une combinaison de services Kubernetes, d'outils spécialisés, de configurations et de bonnes pratiques.
Comment AWS peut-il vous aider à répondre aux exigences de votre cluster Kubernetes ?
AWS fournit des services cloud pour configurer, exécuter et gérer vos clusters Kubernetes :
- Amazon Elastic Compute Cloud (EC2) vous aide à provisionner et à exécuter Kubernetes sur les types d'instances de votre choix.
- Amazon Elastic Kubernetes Service (EKS) vous aide à démarrer, exécuter et faire évoluer Kubernetes, sans avoir à provisionner ou à gérer des instances principales avec un plan de contrôle, etc. EKS est fourni avec des outils de gestion de clusters et des intégrations utiles avec les services de réseau et de sécurité AWS.
Commencez à utiliser les clusters Kubernetes sur AWS en créant un compte gratuit dès aujourd'hui.