Skip to Content

Qu’est-ce qu’un cluster Kubernetes ?

Les fils bleus se croisent et relient différents nœuds sur un arrière-plan sombre, ressemblant à un diagramme de réseau.

Kubernetes a révolutionné la façon dont les organisations gèrent les applications conteneurisées en fournissant un système robuste pour automatiser le déploiement, la mise à l’échelle et les opérations. Au cœur de Kubernetes se trouve le concept de cluster, qui est essentiel pour une orchestration efficace des conteneurs. Il est essentiel de comprendre les clusters Kubernetes pour toute organisation qui cherche à exploiter pleinement les technologies de conteneurs.

Dans cet article, nous verrons ce qu’est un cluster Kubernetes, ses composants, comment en configurer un et les bonnes pratiques de gestion.

Qu’est-ce qu’un cluster Kubernetes ?

Un cluster Kubernetes est un groupe de machines (nœuds) qui fonctionnent ensemble pour exécuter et gérer des applications conteneurisées. L’objectif principal d’un cluster Kubernetes est d’automatiser le déploiement, la mise à l’échelle et la gestion des applications conteneurisées. Cela se traduit par plusieurs avantages clés pour les utilisateurs, notamment :

  • Évolutivité améliorée : Les clusters Kubernetes offrent une évolutivité élastique. Vous pouvez facilement faire évoluer vos applications vers le haut ou vers le bas en ajoutant ou en supprimant des nœuds selon vos besoins. Par exemple, vous pouvez ajouter d’autres nœuds pendant les périodes de pic de trafic pour gérer l’augmentation de la charge. À l’inverse, vous pouvez réduire votre cluster pendant les périodes de faible demande pour économiser des ressources.
  • Tolérance aux pannes améliorée : Les clusters Kubernetes sont conçus pour être hautement disponibles. Ils y parviennent grâce à la réplication, où les applications critiques s’exécutent sur plusieurs pods sur différents nœuds. En cas de défaillance d’un nœud, Kubernetes redémarre automatiquement les conteneurs défaillants et les replanifie sur des nœuds sains. Ainsi, même en cas de défaillance d’un nœud, votre application reste disponible et opérationnelle.
  • Gestion simplifiée : Les clusters Kubernetes rationalisent la gestion des applications conteneurisées. Au lieu de gérer manuellement les configurations sur chaque nœud individuel, Kubernetes utilise des fichiers de configuration déclaratifs écrits dans YAML. Ces fichiers spécifient l’état souhaité de votre application, et Kubernetes s’assure que cet état est maintenu.

Composants d’un cluster Kubernetes

Un cluster Kubernetes comprend deux composants principaux : le plan de contrôle et les nœuds de travail. Chacun de ces composants joue un rôle spécifique dans la gestion du cluster et l’exécution des applications conteneurisées.

Plan de contrôle

Le plan de contrôle agit comme le cerveau du cluster Kubernetes, chargé de prendre des décisions et d’émettre des commandes aux nœuds de travail. Il se compose de plusieurs composants clés, notamment :

  • Serveur API  : Le serveur API est le hub de communication central du cluster. Il expose l’API Kubernetes , qui sert de point d’entrée pour toutes les tâches administratives et interactions avec le cluster. API Les utilisateurs et les outils comme Kubectl interagissent avec le cluster via le serveur API pour soumettre des commandes, gérer les déploiements et accéder aux informations du cluster.
  • etcd : etcd est un magasin clé-valeur distribué hautement disponible qui sert de source de vérité unique pour l’état du cluster. Il stocke des informations critiques sur la configuration du cluster, notamment les définitions de pod, les détails de service et l’état souhaité des déploiements. Ces données sont répliquées sur plusieurs nœuds etc. pour garantir la cohérence et la tolérance aux pannes.
  • Planificateur : Le planificateur est responsable de l’affectation des charges de travail (pods) aux nœuds de travail dans le cluster. Il tient compte de facteurs tels que la disponibilité des ressources, la capacité des nœuds et les règles anti-affinité des pods lors de la prise de décisions de planification. Par exemple, le planificateur peut répartir les pods sur différents nœuds pour améliorer l’utilisation des ressources ou hiérarchiser les pods nécessitant des ressources élevées sur les nœuds disposant d’une capacité suffisante.
  • Responsable du contrôleur : Le gestionnaire des contrôleurs est le point central de gestion de tous les contrôleurs du cluster. Les contrôleurs sont chargés de surveiller en permanence l’état du cluster et de prendre des mesures correctives pour s’assurer que l’état réel du cluster correspond à l’état souhaité défini dans la configuration. Le gestionnaire des contrôleurs gère plusieurs contrôleurs centraux, chacun ayant un objectif spécifique.

Nœuds de travail

Les nœuds de travail sont les chevaux de travail du cluster. Ce sont les machines qui exécutent des applications conteneurisées. Chaque nœud de travail comporte plusieurs composants chargés de gérer et d’exécuter les conteneurs :

  • Kubelet : Le kubelet est un agent qui s’exécute sur chaque nœud de travail. Il agit en tant que représentant du plan de contrôle sur le nœud et est responsable du cycle de vie des pods affectés au nœud. Kubelet garantit que les conteneurs d’un pod sont téléchargés, configurés et exécutés conformément aux spécifications du pod. Il surveille également l’état des conteneurs, redémarre les conteneurs défaillants et extrait les secrets requis par les conteneurs pour fonctionner en toute sécurité.

  • Proxie Kube : Kube-proxy est un proxy réseau qui s’exécute sur chaque nœud de travail. Il met en œuvre des politiques réseau définies pour le cluster et garantit que les pods peuvent communiquer entre eux et avec les services externes. Kube-proxy gère les règles de routage réseau et traduit les noms de services en adresses IP de pod, ce qui permet aux pods de découvrir et de communiquer avec les services au sein du cluster.

En travaillant ensemble, ces composants du plan de contrôle et des nœuds de travail permettent à Kubernetes de gérer et d’orchestrer efficacement les applications conteneurisées à grande échelle.

Configuration d’un cluster Kubernetes

Vous pouvez configurer un cluster Kubernetes selon deux méthodes principales : en utilisant un service Kubernetes géré ou en le déployant manuellement.

Services Kubernetes managés

Les fournisseurs de cloud tels que Google Cloud Platform (GCP) avec Google Kubernetes Engine (GKE), Amazon Web Services (AWS) avec Elastic Kubernetes Service (EKS) et Microsoft Azure avec Azure Kubernetes Service (AKS) proposent des services Kubernetes gérés. Ces services s’occupent de la complexité liée au provisionnement, à la configuration et à la gestion de l’infrastructure de cluster Kubernetes. Il vous suffit de définir la configuration de cluster souhaitée et le service gère le gros du travail, ce qui vous permet de vous concentrer sur le déploiement de vos applications conteneurisées.

Déploiement manuel

Pour plus de contrôle et de personnalisation, vous pouvez déployer manuellement un cluster Kubernetes à l’aide d’un outil comme kubeadm. Kubeadm est une boîte à outils qui permet de démarrer un cluster Kubernetes. Cette méthode consiste à installer kubeadm sur un nœud maître désigné et l’agent kubelet sur tous les nœuds de travail du cluster. 

Configuration manuelle d’un cluster Kubernetes

Conditions préalables

  • Infrastructure : Assurez-vous de disposer d’une infrastructure suffisante, comme des machines virtuelles ou des instances cloud.
  • Exécution du conteneur : Installez un runtime de conteneur comme containerd ou Docker sur tous les nœuds.

Étape 1 : Installer kubeadm, kubelet et kubectl

Sur toutes les machines (nœuds maître et opérateur), utilisez le gestionnaire de packages de votre distribution pour installer les outils kubeadm requis :

# Update package lists (replace 'your_package_manager' with your actual package manager like apt-get or yum)
 $ sudo your_package_manager update
 
 # Install kubeadm, kubelet, and kubectl
 $ sudo your_package_manager install -y kubeadm kubelet kubectl

Note : Sur certains systèmes, une configuration supplémentaire peut être nécessaire après l’installation. Reportez-vous à la documentation officielle Kubernetes pour plus de détails sur le système d’exploitation que vous avez choisi.

Essayer FlashArray

Découvrez comment Pure Storage simplifie considérablement le stockage en mode bloc et fichier dans un environnement en libre-service.

Essayer maintenant

Étape 2 : Initialiser le plan de contrôle (nœud maître)

Choisissez l’une de vos machines qui servira de nœud maître. Exécutez la commande suivante sur le nœud maître pour initialiser le plan de contrôle. Ce processus génère des fichiers de configuration et fournit une commande de jointure pour les nœuds de travail :

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  • kubeadm init : Cette commande initialise le plan de contrôle sur le nœud maître.
  • --pod-network-cidr=10.244.0.0/16 : Cette option spécifie la plage CIDR pour le réseau de pods. Vous pouvez ajuster cette valeur en fonction de vos besoins de configuration réseau.

Après l’exécution de la commande d’initialisation, kubeadm fournira une commande de jointure pour les nœuds de travail. Notez cette commande, car vous en aurez besoin à l’étape 5.

Étape 3 : Configurer kubectl

Sur le nœud maître, copiez le fichier de configuration admin généré dans votre répertoire de configuration kubectl local. Cela vous permet de gérer le cluster à l’aide de commandes kubectl. La commande suivante permet d'atteindre cet objectif :

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Étape 4 : Déployer un réseau de pods

Un plug-in de réseau de pods permet la communication entre les pods du cluster. La flanelle est une option de réseau de pods populaire. Vous pouvez déployer Flannel en utilisant la commande suivante sur le nœud maître :

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Étape 5 : Rejoignez les nœuds de travail dans le cluster

Sur chaque nœud de travail, exécutez la commande de jointure fournie par kubeadm pendant l’étape d’initialisation sur le nœud maître (Étape 2). Cette commande enregistre le nœud de travail avec le plan de contrôle et le prépare à exécuter des charges de travail conteneurisées. La commande de jointure ressemble généralement à ce qui suit :

$ sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
  • <master_ip_address> : remplacez-la par l'adresse IP de votre nœud maître.
  • <token> : remplacez-la par le jeton généré pendant le processus d’initialisation sur le nœud maître.
  • <hash> : remplacez-le par le hachage du certificat CA du jeton de découverte fourni par la sortie de commande d’initialisation kubeadm.

Étape 6 : Vérifier l’état du cluster

Une fois que tous les nœuds de travail ont rejoint le cluster, vérifiez l’état de votre cluster à l’aide des commandes kubectl :

$ kubectl get pods -n kube-system
Evergreen One

Limiter les risques avec Evergreen//One™

Les temps d’arrêt ne sont pas envisageables. Avec Pure, vous savez que vous pourrez toujours répondre à vos demandes de capacité.

Découvrir Evergreen//One

Gestion d’un cluster Kubernetes

Une gestion efficace d’un cluster Kubernetes est essentielle pour maintenir les performances et la fiabilité. Cela inclut l’évolution, la mise à niveau et la mise à jour des nœuds dans le cluster.

Mise à l’échelle du cluster

Kubernetes offre une évolutivité horizontale, ce qui vous permet d’ajuster facilement le nombre de nœuds de travail en fonction des besoins de votre charge de travail.

  1. Ajout de nœuds (mise à l’échelle) :
    1. Préparer le nouveau nœud : Assurez-vous que le nouveau nœud répond aux exigences système recommandées pour la version Kubernetes souhaitée. Installez le logiciel nécessaire, y compris un runtime de conteneur comme Docker ou Containerd, et l’agent kubelet. Reportez-vous à la documentation officielle Kubernetes pour connaître les étapes d’installation détaillées en fonction de votre système d’exploitation
    2. Reliez le nœud au cluster : Utilisez la commande de jointure kubeadm sur le nouveau nœud pour rejoindre le cluster existant. Vous aurez besoin des informations suivantes lors de la configuration initiale de votre cluster :
      • Adresse IP du nœud maître : L’adresse IP de votre nœud maître.
      • Rejoindre le jeton : Ce jeton a été généré pendant l’initialisation du plan de contrôle et fourni dans la sortie.

Voici un exemple de commande de jointure kubeadm :

$ sudo kubeadm join <master_ip_address> :6443 --token <token> --discovery-token-ca-cert-hash sha256 :<hash>

  • Remplacer <master_ip_address> par l’adresse IP réelle de votre nœud maître.
  • Remplacer <token> par le jeton généré pendant l’initialisation du plan de contrôle.
  • Remplacer <hash> par le hachage du certificat CA du jeton de découverte à partir de la sortie d’initialisation du plan de contrôle.

Suppression des nœuds (mise à l’échelle vers le bas) :
Avant de supprimer un nœud, il est essentiel de le vider en premier. Le drainage garantit l’absence de temps d’arrêt de vos applications en expulsant gracieusement les pods du nœud et en les planifiant sur des nœuds sains.

Vidanger le nœud : Utilisez la commande de drain kubectl pour drainer le nœud que vous souhaitez supprimer. Cette commande supprime les pods du nœud tout en permettant à DaemonSets (services système critiques) de continuer à fonctionner.

$ kubectl drain <node-name> --ignore-daemonsets

Remplacer <node-name> par le nom d’hôte ou l’adresse IP du nœud que vous souhaitez supprimer.

 

Supprimer le nœud : Une fois drainé, vous pouvez supprimer le nœud du cluster en toute sécurité à l’aide de la commande de suppression de nœud kubectl.

 

$ kubectl delete node <node-name>

Remplacer <node-name> par le nom d’hôte ou l’adresse IP du nœud que vous souhaitez supprimer.

Vous pouvez également effectuer d’autres opérations de gestion, telles que la mise à niveau du plan de contrôle, la mise à niveau du nœud de travail et les mises à niveau continues.

Maintenir des performances optimales : Surveillance, journalisation et stockage

Une surveillance et une journalisation efficaces sont essentielles pour maintenir votre cluster Kubernetes en bonne santé. Des outils tels que Prometheus et ELK Stack offrent des informations approfondies sur l’utilisation des ressources, l’état des pods et les performances globales, ce qui vous permet d’identifier et de résoudre les problèmes de manière proactive avant qu’ils n’affectent les applications. Kubernetes s’intègre également à diverses solutions tierces pour plus de flexibilité.

Une gestion efficace des données est essentielle pour les applications « stateful ». Portworx ® de Pure Storage offre une solution puissante et native pour les conteneurs qui s’intègre parfaitement à votre cluster Kubernetes.

Portworx rationalise le stockage pour vos charges de travail en :

  • Fournir des volumes persistants : Garantit la persistance des données même lorsque les pods sont redémarrés ou reprogrammés.
  • Protection des données et reprise après sinistre : Offre des snapshots, une réplication et minimise les temps d’arrêt en cas d’incident.
  • Simplifier la gestion : Fournit une interface conviviale pour le provisioning, la surveillance et la gestion des ressources de stockage.

Conclusion

Les clusters Kubernetes sont essentiels à l’orchestration moderne des conteneurs, offrant une évolutivité, une tolérance aux pannes et une gestion simplifiée des applications. Il est essentiel de comprendre les composants, le processus de configuration et les pratiques de gestion des clusters Kubernetes pour exploiter tout leur potentiel. Portworx de Pure Storage s’intègre parfaitement à Kubernetes , offrant des capacités de stockage robustes qui améliorent l’efficacité et la fiabilité globales des charges de travail conteneurisées.

02/2025
Deploying Portworx on Google Distributed Cloud Anthos with vSphere
This Portworx reference architecture contains a validated architecture and design model to deploy Portworx on Anthos running on vSphere.
Architecture de référence
28 pages
CONTACTEZ-NOUS
Des questions, des commentaires ?

Vous avez des questions ou des commentaires concernant des produits ou certifications Pure ?  Nous sommes là pour vous aider.

Planifier une démo

Planifiez une démo en direct et découvrez comment Pure peut vous aider à transformer vos données. 

Tél. : +33 1 89 96 04 00

Services Médias : pr@purestorage.com

 

Pure Storage France

32 rue Guersant

75017 Paris

info@purestorage.com

 

FERMER
Votre navigateur n’est plus pris en charge !

Les anciens navigateurs présentent souvent des risques de sécurité. Pour profiter de la meilleure expérience possible sur notre site, passez à la dernière version de l’un des navigateurs suivants.