1 - Présentation de Kubernetes
C’est quoi Kubernetes ?
Kubernetes est un système permettant d’exécuter et de coordonner des applications conteneurisées sur un cluster de machines.
Il gère le cycle de vie des applications et services conteneurisés à l’aide des méthodes qui offrent la prévisibilité, l’évolutivité et la haute disponibilité.
En tant qu’utilisateur de Kubernetes, vous pouvez :
• Définir comment vos applications doivent fonctionner .
• Comment elles doivent pouvoir interagir avec d’autres applications ou avec le monde extérieur.
• Faire évoluer vos services , effectuer des mises à jour progressives .
• Basculer le trafic entre les différentes versions de vos applications.
Contexte : Pourquoi Kubernetes :
Evolutions de l’architecture des hébergements des applications : De la virtualisation à la conteneurisation :
![](https://formations-k8s.itgalaxy.io/introduction-kubernetes/dockerisation.png)
Le principe du concept de conteneurisation :
• Le principe est de faire tourner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau avec la machine host.
• Le conteneur virtualise l’environnement d’exécution (comme le processeur, la mémoire vive ou le système de fichier...) et ne virtualise donc pas la machine. C’est pour cela que l’on parle de « conteneur » et non de machine virtuelle (VM).
• Comme le conteneur n''embarque pas d’OS, il est donc beaucoup plus léger que la VM. Le conteneur est donc plus facile à migrer ou à télécharger, et plus rapide à sauvegarder ou à restaurer..
• La virtualisation par conteneur permet au serveur d’héberger potentiellement beaucoup plus de conteneurs que s’il s’agissait de machines virtuelles.
Avantages de la conteneurisation point de vue développeur :
• Un environnement portable pour exécution des apps .
• Chaque application s’exécute dans son propre conteneur : avec ses propres versions des librairies .
• Facilite l’automatisation des tests unitaire , fonctionnelles , intégrations …
• Elimine les problèmes de compatibilité entres les plateformes .
• Cout ressource très bas pour lancer un container. On peut en lancer des dizaines sur un poste développeur .
Avantages de la conteneurisation point de vue SysAdmin et Devops :
• Configure once…run anything & evreywhere .
• Elimine les inconsistances entre les différents environnements Dev , recette , statging , preprod , prod
• Améliore la rapidité et la fiabilité du déploiement continu .
• Micro-service , Les applications sont séparées en petits morceaux indépendants et peuvent être déployés et gérés dynamiquement – pas une stack monolithique dans une seule machine à tout faire.
• Facilite la mise en place des pipeline CI/CD .
Problématique
Cela se complique en production lorsqu’on cherche de la HA, de la performance et/ou à mutualiser le matériel .
![](https://formations-k8s.itgalaxy.io/introduction-kubernetes/conteuneur-google.png)
les questions suivantes se posent :
• Comment gérer les dysfonctionnements ?
• Comment gérer les déploiements et leurs emplacements ?
• Comment gérer le scaling ?
• Comment gérer les mises à jours ?
• Comment gérer la communication entre les conteneurs ?
• Comment gérer le stockage nécessaire à la persistance des données ?
• Comment gérer les secrets et la configuration ?
• Tout gérer de manière manuelle et sans surcouche au système de conteneurs n’est pas viable, maintenable et pérenne.
D’où la naissance de l’orchestrateur Kubernetes dans les openspaces de GOOGLE .
Historique
• Google annonce pour la première fois le projet Kubernetes à la mi-2014 .
• Kubernetes s’inspire du projet Borg (projet interne à Google pour gérer un cluster de jobs)
• Kubernetes 1.0 sort le 21 juillet 2015 .
• Un partenariat naît entre Google et la fondation Linux pour créer la Cloud Native Computing Fondation .
• La Cloud Native Computing Foundation est un projet Linux Foundation qui a été fondé en 2015 pour aider à faire avancer la technologie des conteneurs et aligner l’industrie technologique autour de son évolution .
Github Kubernetes Open Source .
Liens avec les outils de conteneurisation et clouds
• La naissance de la Cloud Native Computing Fondation a orienté le développement de Kubernetes pour qu’il puisse s’intégrer dans un écosystème très large. Projets de la CNCF : https://www.cncf.io/projects/
• Kubernetes supporte plusieurs moteurs de gestion de conteneurs au travers de l’interface CRI (Common Runtime Interface), Docker restant le moteur par défaut et recommandé pour la production.
• D’un point de vue utilisateur, la majorité des installations vont supporter les images au format OCI ( Open Container Initiative est un projet de la Fondation Linux visant à concevoir des normes ouvertes pour la virtualisation au niveau du système d’exploitation )
![](https://formations-k8s.itgalaxy.io/introduction-kubernetes/distrib-kube.png)
Ce site Web est propulsé par ItGalaxy.io