Kubernetes est un orchestrateur de containers logiciels open source. Comme son nom l'indique, il est conçu pour orchestrer des architectures de grappe(s) ou cluster(s) de containers logiciels de manière extrêmement agile, en donnant la possibilité de gérer l'allocation des ressources machine sous-jacentes à la volée.
Kubernetes est développé par Google et est la réécriture en Go de Borg, un système de clustering fait maison utilisé par le géant américain depuis des années. Tous ses services reposent sur des grappes de centaines de containers pilotées par Borg. Via cette brique, Google arrête et redémarre pas moins de 2 milliards de containers chaque semaine.
Kubernetes permet de se soustraire d'un cloud unique en ouvrant la possibilité de répliquer et d'orchestrer des applications quelque soit la plateforme ou le cloud provider. Kubernetes peut supporter des clusters allant jusqu'à 50 000 machines.
Les containers logiciels gérés par Kubernetes reposent sur la technologie Docker qui, elle aussi, est portable d'un cloud à l'autre. L'idée est de répliquer les composantes de l'application pour mieux gérer les ressources machine nécessaires à chacun, en vue d'encaisser le trafic.
Kubernetes déploie des clusters de pods Docker (ou nœuds Docker). Après avoir été installé sur un serveur maître, Kubernetes va pouvoir coordonner les composantes de l'application à gérer (serveurs frontaux, couche applicative, base de données) en les distribuant sur plusieurs pods.
Dédié à un traitement donné, un micro-service par exemple, un pod est la plus petite unité d'un cluster Kubernetes. Un pod peut embarquer un ou plusieurs containers étroitement couplés. La fonction "Déploiement" de Kubernetes contrôle l'état de santé du pod et son redémarrage le cas échéant. On utilise la commande kubectl create pour créer un Déploiement orchestrant un pod.