Kubernetes ou K8S, est une solution d’orchestration de conteneurs. Plus précisément, c’est un logiciel d’orchestration qui permet avec des scripts de type YAML, de déployer une application, de la mettre à l’échelle automatiquement, et d’avoir plusieurs possibilités de déploiements dans des environnements différents.
Sur le web, nous retrouvons souvent Kubernetes sous l’acronyme K8S.
Dans le monde du cloud, le DevOPS est de plus en plus utilisé pour automatiser les déploiements d’applications.
Le but premier de Kubernetes est de pouvoir déployer en quelques clics une infrastructure complète d’une application, en parallèle ou en remplacement d’un déploiement précédent.
De plus, Kubernetes permet de gérer la mise à l’échelle de cette infrastructure et donc, d’optimiser le rendu pour l’utilisateur final à la visite de l’application.
Quand vous templatez en YAML un script Kubernetes, vous pouvez lui dire en fonction de la performance du Node ou du Pod en question : le scaler horizontalement ou sur un autre serveur.
Concepts - Mettre à l’échelle des applications dans AzureAzure est la plateforme de Cloud de Microsoft....Il faut savoir que Kubernetes est un logiciel d’orchestration et non un logiciel permettant le lancement de conteneurs ! En d’autres termes, sans un Docker ou un autre logiciel de ce type permettant de créer des conteneurs, Kubernetes ne sert à rien !
Pour rappel, Docker est un logiciel de virtualisation permettant le lancement de conteneurs. On utilise Docker pour éviter d’avoir une adhérence système. En d’autres termes, en utilisant Docker, vous évitez que votre application soit dépendante des mises à jour et des problèmes du système (ex: Debian). Votre application est alors conteneurisée et donc, isolée de l’OS.
La nouvelle voie du DevOPS : faire des conteneurs pour éviter une adhérence système de l’application en déployant une application et ses librairies dans un container (une enveloppe) qui va être complètement abstrait de l’OS de base.
On peut tout aussi bien mettre Docker sur un Windows qu’une Debian, Ubuntu... du moment qu’il y a Docker, les containers seront toujours les mêmes !
Certes, un container est isolé de l’OS, mais il est aussi isolé du réseau ! De base, un container sur Docker n’a aucune adhérence système, c’est à dire qu’il ne va pas reprendre l’IP du système. Il aura une IP interne qu’on pourra exposer sur l’extérieur, ce qui sécurise un peu l’infrastructure.
Voici le schéma général de l’architecture de Kubernetes que vous retrouverez dans la plupart des projets. Il est composé de deux grandes parties : le master et le worker (ou node).
C’est dans le Master que toutes les actions vont être effectuées lorsque vous faites des appels REST ou tapez des lignes de commande. Initialement, il n’a pas pour but de faire le travail du Worker.. Mais, dans certaines applications ou dans certains clouds (Google, Azure ou AWS par exemple), on peut déployer des Kubernetes qui permettent de faire d’un Master également un Worker (on ne vous le conseille pas, notamment pour des questions de performances).
Le Master est composé de plusieurs parties :
Tout cela est exposé par une APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. server qui peut être requêtée par ligne de commande ou par rest API.
Exemple : vous demandez le déploiement d’une application. API Server va envoyer le déploiement sur le scheduler pour la mettre dans la file d’attente (si le worker est déjà occupé, on ne peut pas lui demander trop de tâches en parallèle), c’est le scheduler qui va alors dire au worker : tu as l’air d’être prêt, je vais te donner mes instructions de déploiement.
Sur un environnement Kubernetes, il peut y avoir 1 comme 100 workers.
Le Worker est composé de plusieurs parties :
Le scheduler dit à Kubelet de déployer les applications dans les conteneurs.
L’interaction avec Kubernetes se fait par rapport à une API qui est exposée par K8S. Cette API est utilisable soit par le composant KubeCtl (Client Console), soit avec des appels RESTREST (REpresentational State Transfer) est un style d'architecture logicielle qui fonctionne sous un certain nombre de contraintes..
Le plus utilisé reste l’utilisation de KubeCtl ! Pour pouvoir utiliser les appels REST, il faut absolument mettre tous les certificats Kubernetes dans l’API REST. C’est assez compliqué et long à mettre en place, et donc, mise à part certains agents, rare sont les personnes à l’utiliser de cette manière.. On privilégie KubeCtl !
K8S utilise un dictionnaire qui lui est propre pour parler des conteneurs. Voici les principaux composants :
Voici quelques commandes simples et utiles pour vos premiers pas sur Kubernetes :
Voici les principaux avantages de Kubernetes :
Kubernetes a tout de même quelques inconvénients notables :
Pour conclure sur ce tour d’horizon de l’outil, nous trouvons que Kubernetes est un super outil et on vous le conseille ! Chez AXOPEN, nous utilisons principalement Kubernetes pour nos déploiements depuis GitLabGitLab, c’est une plateforme permettant d’héberger et de gérer des projets web de A à Z., afin de compiler et de déployer nos applications en recette simplement. Des scripts templates ont été préparés sur GitLab afin de pouvoir simplement construire son déploiement et ainsi, accélérer sa production.
Et vous, comment utilisez-vous Kubernetes ?
Le DevOps, c’est quoi et comment se lancer ? On vous donne notre définition du DevOps, nos outils préférés et nos conseils pour réussir un projet en DevOps
Tuto AXOPEN - On vous explique pas à pas le déploiement de websockets sur un cluster de Node.js
Le DevOps n’est pas un outil mais des références et plateformes intègrent des fonctionnalités qui vont aider à faire vivre cette philosophie qui reste très ouverte. Dans cet article, on compare Azure DevOps, GitLab, Jenkins, GitHub !