Definition

Kubernetes

Cette définition fait partie de notre Guide Essentiel : Migrer ses applications vers le cloud : comment bien se préparer

Kubernetes est le système open source de Google dédié à la gestion de conteneurs Linux pour des environnements de cloud privé, public et hybride.

Kubernetes automatise le déploiement, l'évolution, la maintenance, la planification et le fonctionnement de nombreux conteneurs d'application sur des clusters. Kubernetes contient des outils d'orchestration, de catalogue de services et d'équilibrage de charge utilisables avec les conteneurs Docker et Rocket. A mesure que les besoins évoluent, un développeur peut déplacer des charges de travail d'un conteneur de Kubernetes vers un autre fournisseur de Cloud, et ce sans en modifier le code.

Kubernetes exécute les conteneurs dans des « pods ». Un pod est une unité de base qui héberge un ou plusieurs conteneurs. Ceux-ci partagent des ressources et se trouvent sur la même machine physique ou virtuelle. Pour chaque pod, Kubernetes détermine une machine dotée d'une capacité de traitement suffisante et lance les conteneurs associés. Un agent de noeud, appelé Kubelet, administre les pods, ainsi que leurs conteneurs et leurs images. En outre, les Kubelets redémarrent un conteneur en cas de défaillance de ce dernier.

Kubernetes comprend d'autres composants essentiels :

  • Maître : Exécute l'interface de programmation d'application (API, Application Programming Interface) de Kubernetes, et contrôle le cluster.
  • Label : Il s'agit d'une paire clé/valeur utilisée pour la découverte de services. Un label marque les conteneurs et les fédère au sein de groupes.
  • Contrôleur de réplication : Il garantit que les nombres de pods demandés s'exécutent selon les exigences de l'utilisateur. Ce composant gère l'évolution horizontale des conteneurs, en régulant leur nombre pour répondre aux besoins de traitement de l'application en général.
  • Service : Intégrateur et équilibreur de charge configuré automatiquement qui s'exécute à l'échelle du cluster.
Schéma de l'écosystème Kubernetes

La conteneurisation est une approche de la virtualisation dans laquelle la couche de virtualisation s'exécute sous la forme d'une application placée au-dessus d'un système d'exploitation (OS, Operating System) partagé.

Les conteneurs peuvent également être exécutés sur un OS installé sur une machine virtuelle (VM, Virtual Machine), elle-même exécutée sur un hyperviseur.

Les conteneurs sont portables entre différentes plateformes sur site et dans le cloud. Ils sont ainsi adaptés aux applications qui doivent s'exécuter dans des environnements informatiques hétérogènes.

Kubernetes est essentiellement utilisé par des développeurs d'applications et des administrateurs systèmes. Docker Swarm est un outil comparable à Kubernetes. Il propose des capacités natives de gestion de cluster.

Cette définition a été mise à jour en mars 2016

Pour approfondir sur Open Source