Définitions et généralité
Le Logos officiel de Kubernetes ressemble à ceci:
Revoyons un peu d’histoire sur la création de Kubernetes:
En 2013, certains ingénieurs de Google ont commencé à travailler pour créer une représentation open source de l’outil interne utilisé par Google pour faire fonctionner des millions de conteneurs dans les data centers, nommé Borg. La première version de Kubernetes était connue sous le nom de Seven of Nine (une autre référence à Star Trek), mais a finalement été rebaptisée Kubernetes (une traduction déformée du mot grec “helpline”). traduction du mot grec pour “timonier”) pour éviter d’éventuels problèmes juridiques. Pour conserver un peu de la référence originale à la culture geek de Trek, il a été décidé que le logo aurait sept côtés, comme un clin d’œil au nom de travail “Seven of Nine”. En quelques années, Kubernetes est passé du statut de l’un des nombreux moteurs d’ordonnancement de conteneurs en devenir à celui d’un moteur presque incontournable.
Définition
Kubernetes est un mot grec qui signifie “timonier”. Le nom est donc tout un programme, et selon la documentation officielle, Kubernetes est un système open source d’automatisation du déploiement, de la mise à l’échelle et de la gestion des applications conteneurisées, conçu à l’origine par Google et donné à la Cloud Native Computing Foundation.
Généralité
Avant toute chose, il est important de comprendre les composants qui généralise le système Kubernetes, ainsi que toutes les formes d’abstractions que kubernetes utilise pour représenter les clusters.
Principe de fonctionnement de Kubernetes
Kubernetes offre un API (Application Programming Interface) et donc ses objets permettent de décrire l’état souhaité d’un cluster, ils permettront par exemple de dire quelle application vous souhaitez exécuter, quelles images de conteneur ces applications utilisent, le nombre de réplicas, les ressources réseau et disque que vous mettez à disposition, et plus encore. Il est donc possible de faire tout ceci en créant des objets à l’aide de l’API Kubernetes, généralement via des outils telsques Rancher, Ansible, … et surtout via l’interface en ligne de commande, kubectl
.
Une fois que vous avez défini l’état souhaité, le plan de contrôle Kubernetes (control plane en anglais) permet de faire en sorte que l’état actuel du cluster corresponde à l’état souhaité. Pour ce faire, Kubernetes effectue automatiquement diverses tâches, telles que le démarrage ou le redémarrage de conteneurs, la mise à jour du nombre de réplicas d’une application donnée, etc. Le control plane Kubernetes comprend un ensemble de processus en cours d’exécution sur votre cluster:
- Le maître Kubernetes (Kubernetes master en anglais) qui est un ensemble de trois processus qui s’exécutent sur un seul nœud de votre cluster, désigné comme nœud maître (master node en anglais). Ces processus sont: kube-apiserver, kube-controller-manager et kube-scheduler.
- Chaque nœud non maître de votre cluster exécute deux processus:
- kubelet, qui communique avec le Kubernetes master.
- kube-proxy, un proxy réseau reflétant les services réseau Kubernetes sur chaque nœud.
Objets de base de Kubernetes
En général, les objets de base de Kubernetes incluent:
En outre, Kubernetes contient un certain nombre d’abstractions de niveau supérieur appelées Contrôleurs. Les contrôleurs s’appuient sur les objets de base et fournissent des fonctionnalités supplémentaires.
Voici quelques exemples: