Kubernetes est un orchestrateur de conteneurs, ce programme permet d’automatiser la gestion des conteneurs applicatifs.
Les conteneurs applicatifs sont des parties isolées d’une application pouvant être gérées indépendamment de l’application dans son entièreté.
Les bénéfices de la conteneurisation sont :
- Une meilleure sécurité, durant une attaque, seuls les conteneurs sont attaqués et non l’application entière
- Une meilleure performance, car les ressources sont attribuées à chaque conteneur en fonction de la demande
- Une meilleure portabilité, car les conteneurs peuvent être exécutés dans tous les environnements et les infrastructures même si le système d’exploitation diffère
- Une meilleure maintenance, car il n’est plus nécessaire de déployer un système d’exploitation dédié à une application unique
Grâce à Kubernetes, il est possible d’automatiser le déploiement, la gestion et la mise à l’échelle de son application.
Kubernetes est donc une plateforme idéale pour l’hébergement d’applications cloud-natives. En effet, grâce au rassemblement des groupes d’hôtes situés sur site ou sur différents types de clouds au sein de clusters.
Dans cet article, nous examinerons en détail Kubernetes, que ce soit par son historique, ses composants ou encore son architecture. À la suite de cette lecture, vous saurez pourquoi Kubernetes est si populaire dans le monde du DevOps.
Les origines de Kubernetes
1979 : Naissance des conteneurs applicatifs
La technologie des conteneurs a débuté en 1979 avec Unix 7 et le système chroot.
Ce système isolait les processus d’une application en restreignant l’accès aux autres parties du logiciel.
Cette innovation sera adoptée par BSD OS en 1982. Cependant, ce concept n’évoluera pas pendant près de 20 ans, cette technologie restera inchangée jusqu’au 21ᵉ siècle.
Les années 2000 : Internet propulse la conteneurisation
L’essor d’internet permet l’innovation de la conteneurisation, notamment grâce à la possibilité d’héberger ses applications via le cloud.
En 2000, des besoins en sécurité et en administration nait FreeSBD qui permettra d’isoler les services internes avec ceux des utilisateurs.
En 2001, Le premier système de conteneurisation créé à partir du Linux Kernel est lancé. Il s’agit de Linux VServer. L’innovation se poursuit avec Open VZ qui proposera de nouvelles fonctionnalités comme la virtualisation, la gestion des ressources, l’isolation ou encore le checkpointing.
2006 : Google conçoit « Process containers »
Il s’agit d’un moment crucial dans l’histoire des conteneurs et de Kubernetes. En 2006, Google lance le développement de « Process containers » qui sera, lors de son lancement, renommé cgroups en 2007.
cgroups est une fonctionnalité du kernel Linux accomplissant de nombreuses fonctions comme la limitation, la comptabilisation et l’isolation de l’usage des ressources (CPU, mémoire, E/S de disque et réseau) des processus.
cgroups servira de base à de nombreux projets informatiques comme CoreOS, Docker, Hadoop ou encore Kubernetes.
2013 : Lancement de Docker
Le PaaS (Platform as a Service) Docker est disponible depuis le 10 février 2013. Ce programme utilise la virtualisation du système d’exploitation au niveau des conteneurs.
L’entreprise Docker, Inc. fournit un ensemble d’outils avancés simples d’utilisation pour gérer les conteneurs au sein de son logiciel.
Le lancement de Docker participera fortement à la popularité de la conteneurisation.
2015 : Lancement de Kubernetes
En 2015, Google lance Kubernetes sur le marché, aussi appelé « k8s« . Joe Beda, Brendan Burns, Graig McLuckie, Brian Grant et Tim Hockin font partie des plus grands contributeurs.
D’une architecture inspirée par le système Borg de Google. Les utilisateurs apprécieront son système open-source, extensible et portable.
Dès sa sortie, Google collabore avec la Fondation Linux pour former la Cloud Native Computing Foundation avec Kubernetes comme outil de référence. C’est en 2016 que le gestionnaire de paquets Helm a été publié. Il améliorera les capacités du célèbre orchestrateur de conteneurs.
En 2017, les principaux concurrents se sont ralliés à Kubernetes et ont annoncé l’ajout d’une prise en charge native de cette technologie.
Depuis 2019 : Adoption massive de Kubernetes
Kubernetes est très rapidement devenu un outil phare du DevOps, son adoption n’a cessé de croitre depuis son lancement.
Selon une étude de 2020 de la Cloud Native Computive Foundation (CNCF), l’utilisation de Kubernes en production a augmenté de 83% (contre 78% l’année précédente).
Cette même association prédit une évolution de plus de 96% en 2022. Kubernetes est devenu le leader du marché des orchestrateurs de conteneurs.
Comment fonctionne Kubernetes ?
Comme expliqué précédemment, Kubernetes fonctionne avec des clusters qui forment un regroupement de machines virtuelles, cloud ou physiques hébergeant les conteneurs.
Pour comprendre le fonctionnement de Kubernetes, nous devons appréhender le fonctionnement d’un cluster k8s.
l’architecture d’un cluster Kubernetes
Un cluster Kubernetes est conçu selon trois principes :
- La sécurité : les clusters doivent suivre les meilleures pratiques en termes de sécurité
- La simplicité : L’utilisation du cluster se limite à quelques commandes
- L’adaptabilité : Ne doit pas favoriser un fournisseur et doit fournir un fichier de configuration personnalisable
Le cluster est divisé en deux parties, le control plane (plan de contrôle) et des worker nodes (machines de calcul ou nœuds).
Le control plane
Le control plane est l’interface de commande pour gérer le cluster Kubernetes. Il contient tous les composants nécessaires pour contrôler le cluster.
Il est en contact permanent avec nos machines de calcul, il s’assure du respect de notre configuration. Ci-dessous, vous trouverez quelques exemples de composants intégrés au control plane.
Pour en savoir plus, vous pouvez vous référer à notre article sur le planificateur de contrôle.
Api server
L’API server permet la communication avec le cluster. Elle valide ou non les instructions émises crée notamment à l’aide de la commande kubectl ou encore kubeadm.
Scheduler
Le kube-scheduler assure la bonne performance des nœuds par rapport à nos capacités (processeur, mémoire…).
controller manager
Le controller manager est chargé de s’assurer de l’exécution du cluster en connectant les services aux pods. Il s’assure qu’un nombre suffisant de pods est exécuté et corrige les problèmes de défaillance.
etcd
Une base de données clé-valeur que Kubernetes utilise afin de partager des données à propos de l’état d’un cluster.
Les worker nodes
Les noeuds ou « nodes »
Les nœuds de calculs permettent le déploiement d’un cluster, un cluster nécessite au minimum un nœud pour être fonctionnel. Plus les ressources demandées sont importantes, plus le nombre de nœuds doit être grand.
Chaque nœud contient un kubelet et un kube-proxy. Le kubelet est l’application qui interagit avec le control plane tandis que le kube-proxy gère la mise en réseau des services k8s.
Les pods
Les pods représentent un groupe de conteneurs partageant plusieurs caractéristiques comme une même adresse IP et des ressources ainsi que des capacités de stockage partagées.
Il est nécessaire de créer plusieurs pods au sein de plusieurs conteneurs pour assurer les performances d’une application complexe.
Les services
Les services permettent d’exposer une application s’exécutant sur un ensemble de pods en tant que service réseau. NodePort et LoadBalancer sont des exemples de services Kubernetes.
Pour plus d’informations sur le lexique Kubernetes, nous avons créé un glossaire où tous les termes k8s sont définis (les composants, les workers…).
Qui utilise Kubernetes ?
Kubernetes est incontournable dans l’univers du logiciel, le plus souvent, nous trouvons des utilisateurs chez les développeurs, les architectes en informatique, les administrateurs système et bien évidemment chez les DevOps.
K8s intéresse généralement les grandes entreprises ayant le besoin de maintenir des applications complexes et demandeuses en ressources. En effet, les fonctionnalités avancées de l’outil permettent de gérer parfaitement la mise à l’échelle de ces logiciels.
On ne compte plus les grandes corporations adoptant Kubernetes : Google, son créateur et son plus grand contributeur, Spotify qui grâce à k8s arrive à maintenir une application avec plus de 10 millions de requêtes par seconde ou encore Pinterest qui gère une centaine de millions d’utilisateurs actifs chaque mois.
Pourquoi utiliser Kubernetes ?
Kubernetes dispose de nombreux avantages, notamment en termes de coût. Grâce à la conteneurisation, nous observons une meilleure productivité qui découle vers d’importantes économies financières.
Sa grande compatibilité, son modèle open-source ainsi que ses fonctionnalités avancées comme l’autoscaling font de Kubernetes un outil très prisé pour maintenir des applications demandeuses en ressources.
Si vous souhaitez vous former sur Kubernetes mais que vous ne savez pas par où commencer, vous pouvez lire notre article sur « Comment se former sur Kubernetes ? » ou découvrir notre formation Kubernetes.
Est-il toujours d’actualités ?
Kubernetes est toujours en vogue en 2023, les compétences en Kubernetes sont massivement recherchées dans le monde du travail.
Sur cette courbe provenant de Google Trends (données provenant des cinq dernières années), nous pouvons apercevoir l’évolution de l’intérêt pour la recherche du mot « kubernetes ».
Nous constatons une progression du nombre de recherches avec un plus grand intérêt depuis 2022. Nous constatons que la notoriété de Kubernetes n’a cessé d’augmenter.