Kubernetes est le logiciel open-source le plus populaire qui automatise les processus de développement de conteneurs.

Selon l’étude annuelle de la Cloud Native Computing Foundation (CNCF), 96 % des organisations utilisent les K8 ou envisagent de les utiliser. Si vous suivez de près, 5,8 millions de développeurs dans le monde utilisent Kubernetes, et cela représente 31 % des développeurs backend à travers le monde.

Il est préféré pour sa capacité à tirer parti de la technologie en améliorant l’évolutivité, la disponibilité et la rapidité de déploiement. Alors que de nombreux développeurs démarrent leur trajectoire de conteneurs avec Docker (un outil complet qui s’appuie sur la CLI pour interagir avec les conteneurs, un par un), K8s vous fournit des abstractions de haut niveau pour définir les applications et leur infrastructure à travers des schémas sur lesquels vous pouvez collaborer.

Si vous ne connaissez pas encore Kubernetes, cet article est spécialement conçu pour vous aider dans vos premiers pas et partager des idées pour vous aider à démarrer. Vous apprendrez comment K8s peut vous aider, en tant que développeur, à dynamiser vos produits numériques.

Qu’est-ce que Kubernetes et pourquoi en avez-vous besoin ?

Kubernetes est un moteur de coordination (framework) open-source utilisé pour automatiser le déploiement, la mise à l’échelle et la gestion d’applications conteneurisées ; cela inclut la gestion de la prévisibilité et de la disponibilité.

En termes simples, imaginons une application que vous avez conteneurisée. Pour servir les utilisateurs de votre application, vous devez faire fonctionner plusieurs conteneurs. L’inquiétude survient lorsque vous devez gérer ces conteneurs. Les conteneurs ne se trouvent pas nécessairement sur la même machine, ce qui complique les choses. Quelle est donc la solution à ce problème ?

Kubernetes vient à votre secours en fournissant un moyen efficace de gérer tous ces processus de manière transparente. Bien que vous puissiez assimiler K8s à un moteur de conteneurs comme Docker, il s’agit d’un orchestrateur de conteneurs. En tant que développeur, vous n’avez pas à vous soucier de la manière dont K8s effectue l’orchestration. Vous ne configurerez probablement pas un cluster K8s pour votre application ; nous y reviendrons plus tard.

Cependant, vous interagirez avec les clusters mis en place par votre équipe d’infrastructure. Il est essentiel de vous familiariser avec les objets avec lesquels vous allez interagir. Mais avant cela, vous aurez besoin d’une compréhension de haut niveau de son architecture pour saisir ce qui se passe en dessous.

Caractéristiques de Kubernetes

Kubernetes dispose de plusieurs fonctionnalités offrant un large éventail de capacités pour l’exécution de conteneurs et d’autres infrastructures associées. En voici une liste :

  1. Déploiements, mises à l’échelle et retours automatis és – K8s robotise la création du nombre de répliques que vous avez spécifié, les distribue sur le matériel approprié (le plus adapté) et reprogramme les conteneurs si un nœud est en temps d’arrêt. Vous pouvez instantanément faire évoluer vos répliques en fonction de la demande ou de l’évolution de vos besoins, comme l’utilisation de votre processeur.
  2. Découverte de services, stabilisation de la charge et entrée dans le réseau – Kubernetes offre une solution unique de mise en réseau, y compris la découverte de services internes et l’exposition de conteneurs publics.
  3. Applications avec ou sans état – Au début, K8s se concentrait principalement sur les conteneurs sans état. La technologie évoluant sur de nombreux fronts, elle intègre désormais des objets représentant des applications avec état. Ratifiée, toute application peut s’exécuter sur Kubernetes.
  4. Régulation du stockage – Que vous soyez sur un système de fichiers local, un partage réseau ou dans le nuage, Kubernetes fournit (abstrait) un stockage persistant aux applications s’exécutant sur des conteneurs. Cette abstraction vous permet de définir les besoins de stockage indépendamment de l’infrastructure sous-jacente. Bien que cela dépasse le cadre de cet article, cela fonctionne grâce à des principes tels que le volume persistant (PV), la revendication de volume persistant (PVC), les classes de stockage et les plugins de volume.
  5. État déclaratif – K8s utilise des fichiers YAML (Yet Ain’t Markup Language), appelés manifestes d’objets, pour spécifier les états souhaités pour votre cluster. Les manifestes dictent l’aspect de votre cluster, y compris, mais sans s’y limiter, les instances d’application et les règles de mise en réseau souhaitées, entre autres configurations. Lorsque vous appliquez des manifestes, K8s gère automatiquement toutes les transitions d’état – vous n’avez pas besoin d’écrire des scripts pour le faire.
  6. Environnements de travail multiples – Vous n’êtes pas limité à l’utilisation de Kubernetes dans le cloud ou sur votre poste de travail de développeur. Presque toutes les distributions sont disponibles pour répondre à votre cas d’utilisation spécifique. Recherchez les principaux fournisseurs de technologies en nuage comme Amazon Web Services, Google Cloud et Microsoft Azure. Vous constaterez qu’ils proposent tous des services Kubernetes gérés, tandis que des distributions à nœud unique comme Minikube et K3s sont disponibles pour une utilisation locale.
  7. Super extension – K8s est une collection de nombreuses fonctionnalités. Comme si cela ne suffisait pas, vous pouvez accélérer ses capacités avec des extensions. Vous pouvez créer des types d’objets, des opérateurs et des contrôleurs personnalisés pour rationaliser vos charges de travail.

Architecture de Kubernetes

Au cœur de l’architecture Kubernetes se trouvent un nœud maître et deux nœuds de travail. Le nœud maître prend les commandes du cluster, tandis que les nœuds travailleurs (esclaves) exécutent les applications conformément aux décisions du nœud maître.

image-83
Source : kubernetes.io

Voici une description plus détaillée.

Le(s) nœud(s) maître(s)

Le nœud maître dicte les états du cluster et décide des actions de chaque nœud. Plusieurs processus sont nécessaires pour configurer le nœud maître.

  1. Serveur API
    Toutes les communications du cluster sont basées sur ce serveur. C’est la passerelle qui permet à tous les composants du cluster d’échanger des informations. Il expose l’API de Kubernetes. Il joue deux rôles principaux. Le premier est un point d’entrée qui permet aux utilisateurs d’interagir avec le cluster. Par exemple, l’envoi de requêtes lors de l’utilisation de Kubectl. Deuxièmement, le gatekeeping pour authentifier et valider les requêtes. Dans ce cas, seuls certains utilisateurs peuvent exécuter des requêtes.
  2. Planificateur
    Le planificateur attribue des applications ou des objets de charge de travail Kubernetes au nœud de travail. Ici, le planificateur place les pods sur les nœuds en fonction des besoins en ressources. Et lorsque vous parlez de pods, il s’agit simplement d’une petite unité de déploiement dans Kubernetes.
  3. Gestionnaire de contrôleur
    Cette unité gère les clusters comme les défaillances de nœuds pour maintenir le nombre correct de pods. Elle détecte les changements d’état du cluster, comme la mort des pods, et tente de restaurer le pod dans son état d’origine. Par exemple, si un pod meurt accidentellement, le gestionnaire de contrôleur demande au planificateur de ratifier quel nœud lance un nouveau pod en remplacement, et kubelet lance un nouveau pod.
  4. etcd
    Il est également appelé “cerveau de la grappe”. L’unité est un magasin de valeurs clés pour la configuration de la grappe. Cela signifie que toutes les modifications apportées à la grappe sont effectuées à cet endroit. Vous pouvez sauvegarder un cluster en sauvegardant la valeur clé distribuée. Notez toutefois que seules les données relatives à l’état de la grappe y sont stockées, et non les données d’application. Cette unité sert spécifiquement à conserver les informations relatives à l’état de la grappe et à les mettre à la disposition des processus précédents afin de les informer sur la grappe.

Le(s) nœud(s) esclave(s)

Chaque nœud esclave est installé avec trois processus de nœud qui permettent à K8s d’interagir avec lui et de démarrer séparément des pods dans chaque nœud. Les processus requis sont les suivants

  1. Kubelet
    Il s’agit du service principal de Kubernetes qui exécute la couche d’exécution des conteneurs. Si vous retirez cette unité, Kubernetes n’est rien d’autre qu’une API REST dotée d’un magasin de valeurs clés. Par défaut, K8s exécute l’application du conteneur. Les conteneurs sont toujours isolés les uns des autres et du système hôte sous-jacent. Cela s’est avéré analytique pour découpler la gestion des applications individuelles les unes des autres et de l’infrastructure physique ou virtuelle.

    Alors que le contrôle d’admission de l’API peut rejeter des pods ou ajouter des contraintes supplémentaires, le kubelet est l’arbitre final des pods qui s’exécutent sur un nœud particulier, et non les planificateurs ou les Daemonsets. En résumé, les kubelets interagissent avec le nœud et le conteneur. Il prend également les fichiers de configuration et lance les pods à l’aide de l’exécution du conteneur.
  2. Exécution des conteneurs
    Cette section permet d’exécuter des conteneurs. Par exemple, vous pouvez utiliser Docker, rkt, ou conatinered un peu plus sur le fonctionnement des conteneurs.
  3. Kube-proxy
    Cette unité fournit une couche d’abstraction pour les groupes de pods de nœuds dans le cadre de politiques communes, comme dans le cas de l’équilibrage de charge. Tous les nœuds appliquent Kube-proxy pour fournir une adresse IP virtuelle aux clients qui accèdent aux pods dynamiques. Cette structure est la solution à l’équilibrage de la charge tout en conservant une faible surcharge de performance.

Comment fonctionne la conteneurisation ?

La conteneurisation consiste à virtualiser tous les éléments nécessaires à une application logicielle en une seule unité. Les conteneurs contiennent une collection de bibliothèques, de binaires et toutes les configurations nécessaires à l’application. Mais ils n’incluent pas les ressources du noyau ni le matériel virtualisé.

En fin de compte, les conteneurs sont exécutés “en haut” et décrivent les ressources. Comme les conteneurs ne comprennent que les composants de base et les dépendances des applications, ils sont légers et donc plus rapides, contrairement aux autres machines virtuelles.

Lisez aussi : Conteneurs et machines virtuelles : Explication des différences

Comment installer et configurer Kubernetes ?

J’ai passé beaucoup de temps à être théorique ; la section sur les cascades sera tactique et impliquera une expérience pratique des conteneurs. Ce tutoriel couvre en particulier l’installation sur le système d’exploitation Windows.

Il y a plusieurs façons d’effectuer des installations sous Windows ; vous pouvez opter pour la ligne de commande ou l’interface utilisateur graphique. Cependant, vous devez vous assurer que vous remplissez les conditions suivantes.

Votre matériel a besoin d’un nœud maître avec au moins 2 Go de mémoire et 700 Mo pour le nœud travailleur. Pour les exigences logicielles, Hype-v, Docker for desktop, une adresse Mac unique et un UUID de produit unique pour chaque nœud. Voici l’approche étape par étape.

Installation et configuration d’Hyper-V

Hyper-V est le logiciel de virtualisation par défaut de Windows. Il s’agit essentiellement d’une VirtalBox sous forme de stéroïdes. Il vous permet de gérer les machines virtuelles à l’aide de l’interface graphique de Microsoft ou de la ligne de commande. Pour activer Hyper-V, procédez comme suit.

  1. Ouvrez le panneau de configuration.
  2. Cliquez sur Programmes dans le panneau de gauche.
  3. Sous la page des programmes et fonctionnalités, cliquez sur “Activer ou désactiver les fonctionnalités de Windows”
  4. Sélectionnez Hyper-V et les fonctions d’hyperviseur pour Windows.
  5. Ensuite, sélectionnez OK à cette étape ; votre machine devrait redémarrer pour activer les nouveaux paramètres.

Il peut arriver que votre ordinateur redémarre plusieurs fois pour s’assurer que tout est correctement configuré. Vous pouvez vérifier que l’installation a réussi en tapant la commande suivante dans Power Shell.

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

Confirmez que votre écran est rempli d’un état "activé“.

Installation de Docker

Comme vous l’avez appris, K8s est un outil d’orchestration de conteneurs construit sur des conteneurs ; dans ce cas, Docker est un bon choix. K8s communique avec Docker et gère tout au niveau de l’entreprise. Pour commencer, téléchargez Docker pour Windows. Si vous vous demandez pourquoi il est nécessaire d’utiliser Docker Desktop, sachez qu’il est préféré pour simplifier le développement, l’expédition et l’exécution d’applications dockerisées (conteneurisées).

C’est également le moyen le plus rapide de créer des applications Docker sur Windows à l’aide d’Hyper-V et de la mise en réseau. Après une installation réussie, Docker est toujours accessible sur n’importe quel terminal tant qu’il est en cours d’exécution. Pour un guide d’installation détaillé, vous pouvez consulter la documentation officielle de Docker. Si vous rencontrez des problèmes tels que des icônes cachées après l’installation, le problème peut être résolu en redémarrant votre machine.

Installation de Kubernetes

L’interface graphique de Docker vous permet de configurer les paramètres, d’installer et d’activer Kubernetes. Pour installer K8s, procédez comme suit.

  1. Cliquez avec le bouton droit de la souris sur l’icône de la barre des tâches de Docker et sélectionnez Propriétés.
  2. Sélectionnez `Settings` dans le menu déroulant après avoir cliqué sur `Properties`.
  3. Dans le panneau de gauche, choisissez `Kubernetes` et cliquez sur `Apply`.

Docker va alors installer quelques paquets et dépendances supplémentaires. Le processus prend environ cinq à dix minutes, en fonction de votre vitesse Internet. Vous pouvez utiliser l’application Docker pour vérifier que tout fonctionne correctement.

Étant donné que les applications Kubernetes peuvent être déployées à l’aide de la CLI, vous devrez peut-être installer le tableau de bord K8s, car il n’est pas installé par défaut. Installez le tableau de bord en suivant les étapes suivantes.

  1. Téléchargez la configuration YAML.
  2. Déployez l’application en utilisant ce code : . Kubectl apply -f .\recommended.yaml.
  3. Confirmez que tout est bien réglé en exécutant : kubectl.exe get -f .\recommended.yaml.txt.

Pour accéder au tableau de bord, exécutez la commande suivante sur Power Shell (pas CMD)

  1. Exécutez le code suivant ((kubectl -n kube-system describe secret default | select-string "token :") - split " ")[1]
    • Copiez le jeton généré et exécutez kubectl proxy.
  2. Dans votre navigateur, ouvrez http://localhost:8001/api/v1/namspaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.
  3. Cliquez sur `Token` et collez votre token ici.
  4. Connectez-vous.

Si vous êtes arrivé jusqu’ici, bravo, votre écran devrait être rempli avec le tableau de bord de K8s. Maintenant, vous pouvez gérer vos applications sans faire le travail difficile en utilisant le CLI.

Lisez aussi : Comment installer Kubernetes sur Ubuntu 18

Comment créer et gérer un cluster Kubernetes

Si vous avez suivi jusqu’ici, vous devriez avoir installé avec succès Kubernetes sur votre hôte. Ensuite, suivez ces étapes pour créer et effectuer une gestion simple sur votre cluster :

  1. Configurerle réseau – Ici, vous devez configurer le réseau entre les nœuds du cluster, afin de leur permettre de communiquer entre eux.
  2. Configurez l‘authentification de la gra ppe – Créez des mécanismes d’authentification et d’autorisation pour l’accès à la grappe.
  3. Configurez les composants maîtres : il s’agit du serveur API, du planificateur et du gestionnaire de contrôleur.
  4. Joindre les nœ uds de travailleur – Connecter les nœuds de travailleur à la grappe à l’aide des fichiers de configuration fournis par le processus de configuration de la grappe.
  5. Déployer des modules complémentaires – Vous pouvez installer des modules complémentaires pour améliorer les fonctionnalités de la grappe.
  6. Gestion des charges de travail – Il est temps de déployer vos applications.

Bien qu’il ne s’agisse que d’un aperçu du processus de création d’un cluster, celui-ci comporte de nombreuses étapes impliquant plusieurs commandes. Voici le guide de documentation officiel sur la création de clusters avant le déploiement. Il devrait vous servir de guide.

Comment déployer votre première application à l’aide de Kubernetes ?

La commande la plus courante lors de l’utilisation de K8s est kubectl action resource, qui vous permet d’effectuer des actions spécifiques telles que la création ou la suppression d’une ressource spécifiée.

Si vous êtes bloqué, vous pouvez utiliser --help après une sous-commande particulière pour obtenir des informations supplémentaires.

Par exemple, Kubernetes get nodes --help. Déployez votre première application K8s en utilisant la commande kubectl create deployment Kubernetes-bootcamp -image=gcr.io/google-samples/Kubernetes-bootcamp:v1.

Conclusion

Ce guide a été un point d’entrée dans la technologie Kubernetes. Vous avez découvert les avantages, les fonctionnalités et l’architecture de Kubernetes. Heureusement, vous avez peut-être dû vous référer à quelques pointeurs (ressources externes) pour commencer ; il vous a expliqué comment les choses fonctionnent sous le capot.

Bien qu’il puisse sembler insurmontable d’appréhender l’ensemble de la pile technologique en tant que débutant, cet article a été une ligne directrice fluide pour vous permettre de démarrer avec K8s. Vous aurez besoin d’un peu de pratique pour être sûr d’utiliser cette technologie, c’est pourquoi je vous renvoie à la documentation officielle de Kubernetes comme référence parallèle. Plus vous aurez de pratique, plus vite vous deviendrez un expert en K8s.