GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Qu'est-ce que Kubernetes ? Guide complet

Présentation

Le déploiement de conteneurs a transformé les pratiques de développement de logiciels établies. De nouveaux outils et techniques étaient nécessaires. Google a donc développé Kubernetes, un système open source d'orchestration de conteneurs pour le scaling, le déploiement et la gestion automatisés des applications.

Il fournit une interface API unifiée capable de gérer même les systèmes les plus complexes, répartis sur plusieurs serveurs et plates-formes.

Découvrez ce qui fait de Kubernetes un outil indispensable pour gérer et déployer des conteneurs.

Qu'est-ce que l'orchestration de conteneur ?

Un outil d'orchestration de conteneurs , comme Kubernetes, automatise la gestion des conteneurs dans un environnement chaotique et en constante évolution. Pour bien comprendre son rôle, nous plongerons dans la complexité des environnements de conteneurs.

Conteneurs sont de petits environnements virtuels avec une mémoire individuelle, des fichiers système et un espace de traitement. Ils n'ont pas besoin de leur propre système d'exploitation et sont beaucoup plus légers que les machines virtuelles traditionnelles. . Leur taille et leur autonomie les rendent portables et évolutifs à l'infini sur différents appareils et systèmes d'exploitation.

Les développeurs peuvent désormais concevoir des applications sous la forme d'un ensemble de microservices plus petits et indépendants. Idéalement, un seul service ne devrait remplir qu'une seule fonction. Ces microservices sont ensuite couplés et déployés rapidement et facilement sur un cluster Kubernetes.

Comment fonctionne Kubernetes ?

Les conteneurs sont conçus pour être aussi légers que possible. De ce fait, ils sont fragiles et transitoires. Au lieu d'augmenter la durabilité d'un conteneur individuel, Kubernetes utilise la nature instable d'un conteneur et transforme cette faiblesse en atout.

Kubernetes n'a besoin que d'un cadre général de ce à quoi vous aimeriez que votre cluster ressemble. Ce framework est généralement un fichier manifeste de base que vous fournissez à Kubernetes à l'aide d'un outil d'interface de ligne de commande.

L'interface de ligne de commande Kubernetes par défaut s'appelle kubectl . Kubectl est utilisé pour gérer directement les ressources du cluster et fournir des instructions au serveur d'API Kubernetes. Le serveur d'API ajoute et supprime ensuite automatiquement les conteneurs de votre cluster pour s'assurer que l'état souhaité défini et l'état réel du cluster correspondent toujours.

Les principaux éléments d'un cluster Kubernetes sont le nœud maître , nœuds de travail , et Pods . Les composants qui prennent des décisions globales sur le cluster, comme le serveur d'API, sont situés sur le nœud maître.

Nœud maître Kubernetes

Un nœud est une machine physique ou VM. Le nœud maître est la couche d'orchestration de conteneur d'un cluster. Les composants du nœud maître administrent les nœuds de travail et attribuent des tâches individuelles à chacun. Il est chargé d'établir et de maintenir la communication au sein du cluster et d'équilibrer la charge des charges de travail.

Nœud maître

Serveur API Le serveur API communique avec tous les composants du cluster.
Magasin clé-valeur (etcd) Un magasin clé-valeur distribué léger utilisé pour accumuler toutes les données du cluster.
Contrôleur Utilise le serveur API pour surveiller l'état du cluster. Il essaie de déplacer l'état réel du cluster pour qu'il corresponde à l'état souhaité à partir de votre fichier manifeste.
Planificateur Planifie les pods nouvellement créés sur les noeuds worker. Sélectionne toujours les nœuds avec le moins de trafic pour équilibrer la charge de travail.

Nœud de travail Kubernetes

Les composants du nœud maître contrôlent les nœuds de travail . Il existe plusieurs instances de nœuds de travail, chacun effectuant les tâches qui lui sont assignées. Ces nœuds sont les machines sur lesquelles les charges de travail conteneurisées et les volumes de stockage sont déployés.

Nœud de travail

Kubelet Un démon qui s'exécute sur chaque nœud et répond aux demandes du maître pour créer, détruire et surveiller les pods sur cette machine.
Exécution du conteneur Un environnement d'exécution de conteneur récupère les images d'un registre d'images de conteneurs et démarre et arrête les conteneurs. Il s'agit généralement d'un logiciel ou d'un plug-in tiers, tel que Docker.
Proxy Kube Un proxy réseau qui maintient la communication réseau avec vos pods à l'intérieur ou à l'extérieur du cluster.
Modules complémentaires (DNS, Web UI..) Fonctionnalités supplémentaires que vous pouvez ajouter à votre cluster pour étendre certaines fonctionnalités.
Cosse Un module est le plus petit élément de planification dans Kubernetes. Il représente un "wrapper" pour le conteneur avec le code d'application. Si vous devez faire évoluer votre application au sein d'un cluster Kubernetes, vous ne pouvez le faire qu'en ajoutant ou en supprimant des pods. Un nœud peut héberger plusieurs pods.

Comment gérer les clusters Kubernetes

Kubernetes dispose de plusieurs instruments que les utilisateurs ou les composants internes utilisent pour identifier, gérer et manipuler des objets au sein du cluster Kubernetes.

Libellé

Libellés sont de simples paires clé/valeur pouvant être attribuées à des pods. Une fois attribués, les modules sont plus faciles à identifier et à contrôler. Les libellés regroupent et organisent les modules dans un sous-ensemble défini par l'utilisateur. La possibilité de regrouper les pods et de leur attribuer des identifiants significatifs améliore le contrôle d'un utilisateur sur un cluster.

Annotation

Tout comme les étiquettes, les annotations sont également des paires clé/valeur et peuvent être utilisées pour attacher des métadonnées aux objets. Cependant, Kubernetes n'utilise pas d'annotations pour sélectionner et identifier des objets.

Les annotations stockent des informations qui ne sont pas destinées à être utilisées par les ressources internes de Kubernetes. Ils peuvent contenir les coordonnées de l'administrateur, des informations générales sur l'image ou la construction, des emplacements de données spécifiques ou des conseils pour la journalisation. Grâce aux annotations, ces informations utiles n'ont plus besoin d'être stockées sur des ressources externes, ce qui améliore les performances.

Espaces de noms dans Kubernetes

Chaque objet d'un cluster Kubernetes a un ID unique et un nom qui dénote son type de ressource. Un espace de noms est utilisé pour séparer un groupe de ressources. Chaque nom dans un espace de noms doit être unique pour éviter les problèmes de collision de noms. Il n'y a pas de telles limitations lors de l'utilisation du même nom dans différents espaces de noms.

Cette caractéristique distinctive vous permet de conserver des instances détachées du même objet, avec le même nom, dans un environnement distribué.

Pour répertorier les espaces de noms existants dans un cluster, saisissez la commande suivante dans votre interface de ligne de commande :

kubectl get namespaces

Contrôleurs de réplication

Le concept de microservices signifie implicitement que plusieurs instances d'un service donné doivent être déployées et exécutées simultanément. Contrôleurs de réplication gérer le nombre de répliques pour une instance donnée d'un pod. En combinant les contrôleurs de réplication avec les étiquettes définies par l'utilisateur, vous pouvez facilement gérer le nombre de pods dans un cluster en utilisant l'étiquette appropriée.

Par exemple, nous pouvons définir le nombre de répliques dans notre fichier de configuration sur cinq (5). S'il n'y a que trois (3) répliques en cours d'exécution pour le moment, Kubernetes en lancera deux (2) de plus pour correspondre à l'état souhaité. Si 10 réplicas sont en cours d'exécution, Kubernetes va en supprimer cinq (5).

Kubernetes travaille en permanence pour harmoniser le nombre de réplicas avec le nombre défini dans votre fichier de configuration.

Déploiement

Un demploi est un mécanisme qui présente un modèle qui garantit que les pods sont opérationnels, mis à jour ou annulés comme défini par l'utilisateur. Un déploiement peut dépasser un seul pod et s'étendre sur plusieurs pods.

Les contrôleurs de réplication contrôlent le nombre de répliques d'un service. Des pods sont régulièrement ajoutés ou supprimés d'un cluster. Au cours de ce processus, les pods se déplacent souvent dans le cluster et sont même déployés sur différents nœuds. De ce fait, l'adresse IP d'un pod n'est pas constante. Le service Kubernetes utilise un sélecteur d'étiquettes pour regrouper les pods et les résumer avec une seule adresse IP virtuelle utilisée pour découvrir ces pods et interagir avec eux.

Pourquoi avez-vous besoin de Kubernetes ?

Utilisation efficace des ressources

Les outils d'orchestration de conteneurs, comme Kubernetes, conservent les ressources plus efficacement qu'un humain ne pourrait jamais le faire. Kubernetes surveille le cluster et choisit où lancer vos conteneurs en fonction des ressources actuellement consommées sur vos nœuds.

Communication et synchronisation des conteneurs

Étant donné qu'une application nécessite souvent plusieurs conteneurs, Kubernetes peut déployer des applications multi-conteneurs et s'assurer que tous les conteneurs sont synchronisés et communiquent entre eux.

Kubernetes offre un aperçu de la santé de votre application. Il peut fournir des informations vitales et des métriques sur vos conteneurs et clusters. Lorsqu'une application tombe en panne, Kubernetes la récupère automatiquement en faisant tourner un autre conteneur avec un temps d'arrêt minimal et une utilisation optimale des ressources système.

Adaptez-vous efficacement

Sans outils d'orchestration, la mise à l'échelle de vos applications deviendrait un processus chronophage. Les organisations peuvent désormais s'adapter rapidement aux besoins du marché en ajoutant ou en supprimant des conteneurs en fonction des charges de travail momentanées. Par exemple, les détaillants en ligne peuvent instantanément augmenter la capacité de leur application en cas de demande accrue. En période de faible demande, les administrateurs peuvent rapidement réduire l'application.

Comment démarrer avec Kubernetes

Kubernetes étant un système de mise en place et de coordination de conteneurs, un pré-requis pour l'utiliser est de disposer d'un moteur de conteneurisation .

Il existe de nombreuses solutions de conteneurs dont Docker est le plus populaire aujourd'hui. Les autres fournisseurs de conteneurs incluent AWS, LXD , Conteneurs Java ,Conteneurs Hyper-V , et Conteneurs Windows Server .

Outre les conteneurs, il existe d'autres projets et supports sur lesquels Kubernetes s'appuie pour offrir à leurs utilisateurs une expérience complète. Certains d'entre eux sont :

  • Docker ou Atomic Registry (pour le registre officiel)
  • Ansible (pour l'automatisation)
  • OpenvSwitch et routage de périphérie intelligent (pour la mise en réseau)
  • LDAP, SELinux, RBAC et OAUTH avec des couches mutualisées (pour la sécurité Kubernetes)
  • Heapster, Kibana, Hawkular et Elastic (pour la télémétrie)

Pour les débutants qui n'ont encore aucune expérience du déploiement de plusieurs conteneurs, Minikube est une excellente façon de commencer. Minikube est un système permettant d'exécuter localement un cluster à nœud unique et est excellent pour apprendre les bases avant de passer à Kubernetes.

Si vous souhaitez en savoir plus sur Ansible et Kubernetes, consultez notre article sur les différences entre Ansible et Kubernetes.


Ubuntu
  1. C'est quoi Helm ? Helm et Helm Charts expliqués

  2. Comment configurer un cluster Kubernetes avec Rancher

  3. Terraform vs Kubernetes :quelles sont les différences

  4. Qu'est-ce que CentOS - Guide du débutant

  5. Configurer le cluster Kubernetes avec Rancher

Guide complet de journalisation Linux

Guide complet du débutant sur le déploiement du cluster Kubernetes sur CentOS (et autres Linux)

Un guide complet pour installer Tomcat sur Linux

Pare-feu Ubuntu UFW - Un guide complet

Commandes du répertoire Linux :un guide complet

Cronjob - Le guide complet des Cronjobs