Kubernetes est une solution de conteneurisation d’application très populaire. Son utilisation peut se révéler complexe dû au nombre important de concepts abordés et au vocabulaire technique de l’outil. Nous vous proposons ici un glossaire présentant la majorité des concepts que vous trouverez au quotidien dans votre utilisation de Kubernetes.
Concepts Fondamentaux
Qu'est-ce qu'une Annotation ?
Les annotations permettent d’associer des métadonnées aux objets. Elles sont stockées dans Kubernetes qui se contente juste de les rendre disponible.
Qu'est-ce qu'un Cluster ?
Un Cluster est l’ensemble des machines (node) permettant d’exécuter les applications. Ils fournissent des ressources de calcul, de mémoire, de stockage et de réseau. Kubernetes utilise ces ressources pour exécuter les différentes charges de travail qui composent votre système. Notez que votre système entier peut être constitué de plusieurs clusters. L’application qui sert les fonctionnalités de Kubernetes par le biais d’une interface RESTful et qui stocke l’état du cluster.
Qu'est-ce que le Control Plane ?
Il se compose de plusieurs éléments, tels qu’un serveur API, un planificateur, un gestionnaire de contrôleur et, éventuellement, un gestionnaire de contrôleur de nuage. Le control plane est responsable de l’état global du cluster, de la planification des pods au niveau du cluster et de la gestion des événements. En général, tous ses composants sont installés sur le même hôte, mais ce n’est pas obligatoire.
Que sont les Labels ?
Les labels sont des attributs servants à identifier les objets. Ils sont utilisés pour regrouper des ensembles d’objets, très souvent des pods via des sélecteurs. Les labels doivent respecter une syntaxe stricte et sont destinés à identifier les objets et non à leur attacher des métadonnées. Les sélecteurs de labels sont utilisés pour sélectionner des objets sur la base de leurs labels.
Que sont les Names et Namespace ?
Les objets sont tous identifiés par un UID et un nom. Le nom sert pour indiquer aux API à quel objet il est fait référence dans la configuration de votre cluster. Contrairement aux UID, les noms peuvent être réutilisés si l’objet précédent a bien été supprimé. Un Namespace est un espace permettant d’isoler des objets afin de leur appliquer des règles communes. Les pods et services d’un Namespace peuvent tout de même accéder aux services d’un autre Namespace.
Les UID sont générés par Kubernetes et ne nécessitent pas d’action spécifique de votre part.
Qu'est-ce qu'un Node ?
Un node est un hôte unique. Il peut s’agir d’une machine physique ou virtuelle. Son rôle est d’exécuter des pods. Chaque nœud Kubernetes exécute plusieurs composants Kubernetes, tels que le kubelet, le runtime de conteneur et le proxy kube. Les nodes sont gérés par le plan de contrôle Kubernetes. Les nœuds sont la force ouvrière de Kubernetes et se chargent de toutes les tâches lourdes.
Si vous souhaitez en savoir plus sur les nodes, vous pouvez lire notre article sur le sujet.
Qu'est-ce qu'un Pod ?
Un pod est une unité de travail sur Kubernetes, chaque pod contient un ou plusieurs conteneurs. Tous les conteneurs d’un pod ont la même adresse IP et le même espace port. Ils peuvent communiquer entre eux en utilisant localhost ou la communication standard. Tous les conteneurs d’un pod peuvent avoir accès au stockage local partagé sur le nœud hébergeant le pod.
Que sont les Services ?
Les Services sont utilisés pour apporter des fonctionnalités aux utilisateurs ou à d’autres services. Ils sont pour la pluparts composés d’un groupe de pods identifiés par un label. Les services disposent d’un équilibrage de charge automatisé par Kubernetes mais il peut être fait manuellement dans le cas où ils utilisent des ressources externes.
Que sont les ReplicaSet ?
Les ReplicaSet garantissent le maintien d’un ensemble de Pod en état stable. Les objets workloads utilisent les ReplicaSets pour s’assurer que le nombre configuré de Pods est exécuté dans votre cluster, sur la base des spécifications de ce ReplicaSet.
Que sont les Secrets ?
Les secrets sont des objets qui contiennent des informations sensibles telles que des informations d’identification et des jetons. Ils sont stockés par défaut en clair dans ETCD et son accessible via l’API Kubernetes. Utiliser les secret plutôt que de mettres ces informations en dur dans un pod ou un container image en rend l’utilisation beaucoup plus flexible.
Que sont les StatefulSet?
StatefulSet est utilisé pour gérer des applications avec état. Il gère le déploiement et la mise à l’échelle d’un ensemble de Pods, et fournit des garanties sur l’ordre et l’unicité de ces Pods. Un StatefulSet regroupe les pods fondés sur une même spécification de container.
Que sont les Volumes ?
Les volumes permettent de stocker des données sur des pods à l’exterieur de ceux-ci. Ils permettent de conserver les données en cas de suppression du pod ou de faciliter le transfer de données d’un pod à un autre. Il existe plusieurs types de volumes différents et ils sont lus par Kubernetes à travers Le Container Storage Interface (CSI).
Concepts Avancés
Que sont les sidecar pattern ?
Ils permettent de co-localiser un conteneur dans un pod en plus du conteneur de l’application principale. Les sidecar pattern permettent d’actualiser vos politiques dans Kubernetes sans toucher aux conteneurs applicatif, et ainsi éviter des casses accidentelles.
Que sont les Ambassador pattern ?
Les ambassador pattern servent à représenter un service distant comme s’il était local, et ainsi lui appliquer une politique. Cela permet de compartimenter les changements des services avec ceux du conteneur principal.
Que sont les Adapter pattern ?
Les adapter pattern servent à standardiser l’output du conteneur principal. Lors du déploiement d’un service, il peut générer des rapports dans un format non valide pour les autres services du conteneur, car trop récent. Les adapter pattern font alors la transition entre tous les services jusqu’à ce qu’ils aient tous été mis à niveau.
Que sont les API ?
Le cœur du control plane est le serveur API. Il crée un accès HTTP permettant aux utilisateurs et aux applications externes de communiquer avec votre cluster. L’API kubernetes vous permet d’interroger et de manipuler les différents objets de votre cluster. La plupart des actions sont réalisées via l’interface de ligne de commande Kubectl.
Qu'est ce que la Reconciliation ?
Kubernetes fonctionne avec des boucles de contrôle. Il surveille en permanence l’état des clusters pour faire des corrections en temps réel au besoin. Toutes les actions nécessaires au retour à l’état souhaité du cluster (comme refaire une réplique par exemple) sont appelées réconciliation.
Composants Kubernetes
Qu'est ce que le control plane ?
Le control plane est un ensemble de composants prenants des décisions globales pour gérer le cluster. Tous les composants peuvent être exécutés sur n’importe quelle machine, mais ils sont souvent placés dans une machine indépendante de celle utilisée pour les conteneurs. Le control plane communique avec les worker nodes qui contiennent les applications.
Que sont les workloads ?
Les workloads sont des applications s’exécutant dans Kubernetes. Ils peuvent être constitués d’un unique composant ou de plusieurs agissants de concert et s’exécutent à l’intérieur d’un ensemble de pods. Parmis les ressources workload fournies par Kubernetes, on peut trouver les replicaset, les daemonset, les deploiement et les statefulset.
Que sont les discovery et load balancing ?
Les discovery permettent aux applications de communiquer avec le monde extérieur. Il fait la liaison entre les pods et les services externes et leur permet d’intéragir. Le Load balancing permet de prendre tous ces éléments en compte et de leur attribuer des ressources. Sans load balancing, Kubernetes ne peut pas voir tous les éléments d’un cluster comme un tout agissant de concert.
comment sont gérés la configuration et le stockage ?
Kubernetes repose sur deux concepts clés : la configuration dynamique et la gestion des secrets. Ils permettent d’exécuter des applications complexes sur vos clusters. Les données relatives au secret et à la configuration sont généralement stockées sur Etcd.
Qu'est ce que ETCD ?
Etcd est un magasin dans lequel sont stockées les données. Kubernetes y stocke l’ensemble de l’état du cluster. Plus un cluster est grand, plus il a de chance de posséder plusieurs magasins etcd afin de faciliter sa haute disponibilité.
Que sont les métadonnées ?
Les métadonnées permettent de caractériser les ressources auxquelles elles sont rattachées. La plupart du temps, vous n’interagissez pas avec elles mais elles sont cruciales pour organiser vos clusters et comprendre comment les différentes ressources interagissent entre elles. Elles peuvent être lues par des services extérieurs à Kubernetes, et ainsi en faciliter l’utilisation.
Qu'est ce qu'un Cluster Kubernetes ?
Un cluster est un ensemble nœuds exécutants des applications conteneurisées. Chaque conteneur regroupe une application, son package et les services nécessaires au bon fonctionnement de celle-ci. Les clusters sont composés d’un master node et de plusieurs worker nodes. Ces nodes peuvent être des machines physiques ou virtuelles.
Qu'est ce que gestionnaire de controleur Kube ?
Le gestionnaire de contrôleurs Kube est un ensemble de plusieurs gestionnaires regroupés dans un seul binaire. Tous les contrôleurs regroupés dans ce composant ont pour mission de controler le clister via l’API et de s’assurer d’orienter le cluster vers l’état souhaité par l’administrateur si besoin.
Qu'est ce que le cloud controler manager ?
Kubernetes permet aux fournisseurs cloud de s’intégrer à son architecture afin de contrôler les nodes, les volumes, les routes ou les services. Il prend le pas sur le gestionnaire de controleurs Kube pour toutes les actions relatives au cloud. Implémenté dans la version 1.6 de Kubernetes, le cloud controler manager est déjà supporté par la plupart des fournisseurs cloud majeurs.
Qu'est ce que le Kube-scheduler ?
Le Kube-scheduler a pour mission de l’ordonnance des pods dans les nodes. Pour mener cette tâche à bien, il doit prendre en compte de multiples facteurs comme les besoins en ressource ou les exigences de service. Vous pouvez le remplacer ou le faire travailler de concert avec votre propre ordonnateur personnalisé si jamais il ne répond pas à vos besoins.
Que sont les DNS ?
Chaque service ou pod présent dans un cluster reçoit un nom DNS. Cela permet d’indiquer aux conteneurs d’utiliser l’adresse IP associée au nom DNS, et ainsi rendre la découverte automatique beaucoup plus simple.
Qu'est ce que le Kubelet ?
Le Kubelet agit comme un représentant de Kubernetes sur les nœuds. Son rôle est de superviser la communication avec le serveur API ainsi que gérer les pods en cours d’exécution.
Containers Runtime dans Kubernetes
Qu'est-ce que le container Runtime Interface (CRI) ?
Le CRI est une API des exigences, spécificités et des bibliothèques pour les containers runtime afin d’intégrer le kubelet dans un node. Le kubelet n’a donc pas besoin de s’interfacer avec plusieurs runtime, il communique via le CRI sur les conteneurs compatibles.
Qu'est ce que Docker ?
Docker est une application de conteneurs applicatifs. À l’origine, Kubernetes a été conçu pour gérer des environnements Docker. Même si Docker ne dispose plus d’un traitement spécial en cas d’utilisation avec Kubernetes, c’est une solution très populaire parmi les équipes DevOpps du monde entier.
Qu'est ce que Containerd ?
Créé par l’équipe de développement de Docker, il s’agit d’un container runtime utilisé pour la gestion du cycle de vie d’une machine physique ou virtuelle. Il permet de démarrer, créer, arrêter et détruire des conteneurs.
Parce que le vocabulaire ne suffit pas. Si vous souhaitez connaître la meilleure manière de vous former sur Kubernetes, vous pouvez lire notre article sur comment se former sur Kubernetes ou sur comment se former sur Kubernetes gratuitement en 2023.