Un node Kubernetes est une machine qui exécute des actions conteneurisées dans un cluster Kubernetes. Cela peut être une machine physique ou virtuelle hébergée sur site ou dans une solution cloud. Les versions récentes de Kubernetes peuvent en supporter jusqu’à 5 000 simultanément.
Il existe 2 types de nodes :
Les master nodes : ils exécutent le control plane de l’ensemble du cluster. Chaque cluster doit avoir au minimum un master node. Ils comprennent chacun un serveur API, l’etcd (une base de données contenant l’état du cluster), le gestionnaire de contrôleur et le scheduler.
Les workers nodes : il s’agit des nœuds exécutant les charges de travail dans les conteneurs. Chaque worker node exécute le Kubelet, l’agent qui permet au plan de contrôle de fonctionner correctement.
Pods VS Nodes
Un node est une machine spécifique que vous pouvez traiter individuellement comme un pool de ressources CPU et/ou RAM sur lesquels déployer des charges de travail conteneurisées. Lorsqu’une application est déployée dans le cluster, Kubernetes répartis le travail entre les nodes.
Un Pod est lui la plus petite unité de gestion d’un cluster Kubernetes. Il comprend plusieurs conteneurs et les utilisateurs peuvent y attacher plus ou moins de ressources. Les pods peuvent être déplacés et remplacés par un autre pod en cas de défaillance. Chaque pod possède son propre IP afin de communiquer avec d’autres pods.
Le scheduler Kubernetes a pour mission de chercher les worker nodes disponible pour les assigner à chaque pod. Chaque pod dispose d’un modèle qui définit le nombre d’instances du pod à exécuter et sur quel type de node.
Les composants d’un node Kubernetes
Chaque node Kubernetes est composé de plusieurs composants logiciels :
Kubelet
Le kubelet est un agent permettant de communiquer avec le control plane. Il lui permet de surveiller le node et de fournir des instructions au runtime du conteneur.
Lorsque Kubernetes veut planifer un pod, il envoie des PodSecs du pod au Kubelet. Le kubelet s’assure alors que les conteneurs sont sains et son conforme à la configuration déclarative.
Kube-proxy
Kube proxy permet de mettre les nodes en réseau avec des règles qui assurent la communication entre les pods et et les entités extérieures au cluster.
Kube-proxy peut fonctionner selon 3 modes : iptables, ipvs et userspace. Chaque mode est adapté en fonction de la taille du cluster.
CONTAINER Runtime
Il sert de moteur pour exécuter des conteneurs. Les runtime les plus connus sont Docker, containerd ou CRI-O. C’est l’outil qui se charge d’exécuter des conteneurs sur le nœud.
Kubernetes ne prend pas lui-même en charge l’arrêt et le démarrage des conteneurs ainsi que leur cycle de vie et à donc besoin d’un container runtime pour réaliser cette tâche. Le Kubelet fait la liaison avec le container runtime pour lui fournir les instructions présentes dans le cluster.
Pour plus d’informations sur les composants de Kubernetes, vous pouvez lire notre lexique Kubernetes pour être incollable sur le jargon k8s. Si vous souhaitez développer vos compétences, mais que vous ne savez pas comment débuter, nous vous proposons nos articles sur « Comment se former sur Kubernetes ? » ou sur « Comment se former sur Kubernetes gratuitement ? ».
Combien de nodes Kubernetes dans un cluster ?
Vous pouvez utiliser 3 critères pour déterminer le nombre de nodes optimal dans votre cluster.
Performance
Plus de nodes vous permettent d’exécuter des tâches avec de meilleures performances. Chaque node ajoute des ressources en termes de mémoire et de calcul.
La plupart du temps, les experts de kubernetes conseillent de disposer de 20 % de ressource de marge entre les ressources disponibles et les ressources nécessaires au cluster. Cela permet ainsi de ne pas être trop vulnérable aux pannes de nodes et aux pics.
Haute disponibilité
Un cluster avec beaucoup de nodes permet de mettre en place des stratégies haute disponibilité comme l’exécution de plusieurs instances du même pod. Pour permettre des fonctions haute disponibilité de base, on estime qu’un cluster doit comporter au minimum 2 master nodes et 12 worker nodes.
Machines physiques ou virtuelles
Vous pouvez ajouter des nœuds au cluster en ajoutant des machines physiques ou en exécutant des virtual machines (VM) supplémentaires sur la même bare metal machine. Les VM sont moins fiables que les machines physiques, car si une tombe en panne, toutes les VM fonctionnant dessus s’arrêtent. Cependant, les machines virtuelles sont plus rentables et sont plus faciles à entretenir.
Voici une illustration de comment fonctionnent les nodes :