Kubernetes (K8s) est une plateforme open source, portable et extensible pour la gestion des applications conteneurisées et de leurs services. Elle facilite la configuration et l’automatisation du déploiement des applications. Kubernetes représente un écosystème vaste et en pleine expansion, avec un large éventail de services, de support et d’outils disponibles.
Kubernetes, qui signifie « pilote » ou « barreur » en grec, a été rendu open source par Google en 2014. Il s’appuie sur plus d’une décennie d’expérience de Google dans l’exploitation de charges de travail à grande échelle, combinée aux meilleures idées et pratiques de la communauté.
L’évolution du déploiement d’applications :
Déploiement traditionnel : Initialement, les applications étaient exécutées sur des serveurs physiques. Il était impossible de définir des limites de ressources pour les applications sur un serveur physique, ce qui entraînait une allocation inefficace des ressources.
Déploiement virtualisé : La virtualisation permet d’exécuter plusieurs machines virtuelles (VM) sur le CPU d’un serveur physique. La virtualisation isole les applications entre les VM et offre un niveau de sécurité car les informations d’une application ne sont pas accessibles par une autre. La virtualisation permet une meilleure utilisation des ressources d’un serveur physique et une meilleure évolutivité.
Déploiement conteneurisé : Les conteneurs sont similaires aux VM, mais ils sont plus isolés et partagent le système d’exploitation (OS) entre les applications. Par conséquent, les conteneurs sont considérés comme légers. Tout comme les VM, un conteneur possède son propre système de fichiers, CPU, mémoire, espace de processus, etc. Les conteneurs offrent de nombreux avantages : création et déploiement rapides des applications, développement et intégration continus, distinction entre Dev et Ops, observabilité du système et des applications, cohérence de l’environnement, portabilité, gestion centralisée des applications, microservices distribués, isolation des ressources et utilisation efficace des ressources.
Pourquoi utiliser Kubernetes ?
En production, il est nécessaire de gérer les conteneurs exécutant les applications et de garantir l’absence de temps d’arrêt. Par exemple, si un conteneur tombe en panne, un autre doit démarrer. Kubernetes fournit un framework pour exécuter des systèmes distribués de manière robuste. Il gère la réplication et la redondance des applications et fournit des modèles de déploiement.
Kubernetes offre :
- Découverte de services et équilibrage de charge : Kubernetes peut exposer un conteneur à l’aide du DNS ou de sa propre adresse IP. Si le trafic vers un conteneur est élevé, Kubernetes peut équilibrer la charge et distribuer le trafic réseau pour assurer la stabilité du déploiement.
- Orchestration du stockage : Kubernetes permet de monter automatiquement le système de stockage de votre choix.
- Déploiements et retours en arrière automatisés : Kubernetes peut modifier l’état actuel vers l’état souhaité à une fréquence contrôlée.
- Planification automatisée : Kubernetes peut orchestrer les conteneurs sur les nœuds pour optimiser l’utilisation des ressources.
- Auto-réparation : Kubernetes redémarre les conteneurs en panne, les remplace, supprime les conteneurs qui ne répondent pas aux vérifications d’état et les masque aux clients jusqu’à ce qu’ils soient prêts à fonctionner.
- Gestion de la configuration et de la sécurité : Kubernetes permet de stocker et de gérer les informations sensibles.
Kubernetes n’est pas :
Kubernetes n’est pas un système PaaS (Plateforme en tant que Service) traditionnel et complet. Il opère au niveau des conteneurs et non au niveau du matériel. Kubernetes :
- Ne limite pas les types d’applications prises en charge.
- Ne déploie pas le code source et ne construit pas les applications.
- Ne fournit pas de services au niveau de l’application, tels que les middleware.
- N’impose pas de solutions de journalisation, de surveillance ou d’alerte.
- Ne fournit ni n’impose de configuration de langage/système.
- Ne fournit ni n’applique aucune configuration, maintenance, gestion ou système d’auto-réparation complets.
- N’est pas un simple système d’ordonnancement. Il élimine le besoin d’ordonnancement.