#1 Leader mondial de la résilience des données
Recommandations de Veeam pour les clients impactés par la mise à jour de CrowdStrike

Un cluster Kubernetes : qu'est-ce que c'est ?

Un cluster Kubernetes est un groupe de ressources informatiques, telles que des serveurs ou des machines virtuelles, géré par le système d’orchestration des conteneurs Kubernetes. Kubernetes est une plateforme de conteneurisation open source qui simplifie le déploiement et la mise à l’échelle des conteneurs d'applications. Elle fournit une API facile à utiliser pour gérer les conteneurs dans différents environnements et infrastructures. Un environnement Kubernetes bien orchestré a également besoin d’une protection fiable des données. Si vous utilisez déjà Kubernetes ou envisagez de le faire dans un avenir proche, les solutions de sauvegarde natives de Veeam peuvent vous aider à protéger vos clusters et vos workloads stratégiques.

Composants d’un cluster Kubernetes

Un cluster Kubernetes est constitué de deux types de nœuds : les nœuds maîtres et les nœuds de travail. Les nœuds maîtres sont les composants du plan de contrôle responsables de la gestion de l'état global du cluster, tels que le maintien de l'état souhaité du cluster, la planification et le déploiement des applications, ainsi que la gestion du réseau du cluster. Dans un cluster Kubernetes hautement disponible, il peut y avoir plusieurs nœuds maîtres pour la tolérance aux pannes.

Les nœuds de travail, quant à eux, sont les ressources de calcul sur lesquelles s’exécutent les applications conteneurisées réelles. Ils hébergent des pods, qui contiennent au moins un conteneur, et sont les plus petites unités que vous pouvez déployer dans Kubernetes. Les nœuds de travail communiquent avec le nœud maître pour s’assurer que tout s’exécute comme prévu.

Kubernetes a également deux types de composants : Les composants du plan de contrôle et les composants de nœud. Les composants du plan de contrôle sont les suivants.

  • Kube-apiserver : Le serveur d’API est le principal mécanisme de contrôle du plan de contrôle Kubernetes. Il donne accès à l’API Kubernetes et traite les demandes et les opérations de mise à jour de l’état du cluster.
  • Kube-scheduler : Ce composant est chargé de placer les pods sur les nœuds en fonction des besoins en ressources, de la qualité de service, des contraintes et d'autres critères. Il prend en compte la capacité des nœuds, les règles d’affinité/anti-affinité et d’autres facteurs pour prendre les décisions de planification.
  • Kube-controller-manager : Ce composant exécute les processus de contrôleur, qui gèrent l’état global du cluster. Parmi les exemples, citons le Replication Controller, qui garantit que le nombre souhaité de réplicas pour une application spécifiée est en cours d’exécution, et le Service Controller, qui gère l’équilibrage de charge des applications.
  • etcd : Il s’agit d’un magasin clé-valeur distribué et cohérent utilisé par Kubernetes pour stocker toutes les données nécessaires à la gestion du cluster, y compris les données de configuration et l’état global du système.

Les nœuds individuels, quant à eux, impliquent les composants répertoriés ci-dessous.

  • Kubelet : Cet agent s’exécute sur chaque nœud de travail, il s’assure que les conteneurs s’exécutent dans les pods et signale l’état du nœud et des pods en cours d’exécution au plan de contrôle. Il communique avec le serveur d’API pour s’assurer que l’état souhaité de l’application est maintenu.
  • Proxy Kube : Ce composant est un proxy réseau qui s’exécute sur chaque nœud de travail et permet l’abstraction des services en maintenant les règles réseau et en s’assurant que le trafic est correctement transféré vers les pods appropriés.
  • Runtime de conteneur : Ce logiciel est responsable de l’exécution des conteneurs, tels que Docker, containerd ou CRI-O. Kubernetes prend en charge différents runtimes de conteneur via l’interface d’exécution de conteneur.

Combinées au sein d’un cluster, les deux catégories fonctionnent ensemble pour fournir une plateforme fiable et homogène pour le déploiement et l’administration des applications conteneurisées. Plus précisément, les clusters Kubernetes offrent l’abstraction et l’automatisation nécessaires pour gérer les applications conteneurisées à grande échelle, ce qui permet aux développeurs de se concentrer sur le code et aux équipes opérationnelles de gérer l’infrastructure plus efficacement.

Comment travailler avec un cluster Kubernetes ?

L’installation, la configuration et la maintenance de Kubernetes s’appuient quasiment entièrement sur l’API correspondante. Cette API expose les fonctionnalités du système et permet la gestion des clusters et des nœuds par programmation. Il existe plusieurs manières d’utiliser les API Kubernetes :

  • kubectl : L’outil de ligne de commande kubectl offre le principal moyen d’interagir avec l’API Kubernetes. Il traduit vos commandes en appels d’API et les envoie au serveur d’API.
  • Appels d’API RESTful : Vous pouvez effectuer des appels d’API RESTful directement vers le serveur d’API Kubernetes à l’aide d’outils tels que curl, wget ou tout autre langage de programmation prenant en charge les requêtes HTTP. Pour authentifier et autoriser les appels d’API, vous devez utiliser les informations d’identification et les jetons appropriés.
  • Bibliothèques clientes : Kubernetes fournit des bibliothèques clientes pour différents langages de programmation, tels que Go, Python, Java et JavaScript. Il s’agit d’un moyen plus pratique et idiomatique d’interagir avec l’API Kubernetes dans le langage de programmation de votre choix.

Dans Kubernetes, l’état souhaité est une représentation déclarative de l’état attendu des ressources au sein du cluster. Lors de la mise à jour de pods, de déploiements ou de périphériques, l’état est défini à l’aide d’un fichier de configuration YAML ou JSON. Kubernetes s’efforce ensuite de réconcilier l’état réel des ressources avec celui spécifié dans le fichier de configuration.

L’état souhaité comprend des informations telles que l’image du conteneur, le nombre de réplicas pour un déploiement et les variables d’environnement pour les pods. Il inclut également le type d’équilibrage de charge utilisé pour un service. Les contrôleurs Kubernetes surveillent en permanence ces fichiers pour effectuer les ajustements nécessaires à l’état souhaité  du conteneur.

Cette approche déclarative offre plusieurs avantages, notamment la capacité de Kubernetes à s'auto-réparer lorsqu'un pod se bloque ou qu'un nœud devient inaccessible. Kubernetes prend automatiquement des mesures correctives pour restaurer l’état souhaité. Cela permet également de maintenir les ressources du cluster en adéquation avec des workflows de contrôle de version familiers, facilitant ainsi les restaurations.

Comment configurer un cluster Kubernetes

Bien que cela puisse sembler compliqué au premier abord, Kubernetes offre de puissantes abstractions et une API cohérente qui facilitent grandement la gestion des applications à grande échelle. Cela dit, configurer un cluster Kubernetes est unique en ce qui concerne l’infrastructure. Il est donc utile d’avoir une vue d’ensemble du processus. Mais avant de se lancer, il est utile de connaître les conditions de déploiement.

Kubernetes peut s’exécuter sur différents matériels et configurations de VM. Les exigences exactes dépendent de l’échelle et des ressources requises par vos applications. Toutefois, pour un cluster minimal, chaque nœud doit disposer d’au moins 2 cœurs de CPU et de 2 Go de RAM, d’une connexion réseau stable et efficace et d’un espace de stockage suffisant sous forme de stockage local, NAS ou cloud tel qu’Amazon EBS, Google Persistent Disk et Azure Disk.

Configurer le cluster Kubernetes

Les clusters Kubernetes peuvent être déployés dans quasiment n’importe quel environnement : sur site, dans un cloud public ou en utilisant un service Kubernetes géré, tel que Google Kubernetes Engine, Amazon Elastic Kubernetes Service ou Azure Kubernetes Service. Opter pour une solution gérée simplifie le processus, bien que la gestion autonome de Kubernetes offre un meilleur contrôle sur l'infrastructure.

L’installation nécessite l’installation de kubectl, l’outil de ligne de commande qui interagit avec l’API Kubernetes. Il se connecte via HTTP. Il est installé à partir d’une machine locale et configuré pour se connecter à un cluster.

Définir les composants d'application

Les applications conteneurisées dans Kubernetes sont décrites à l’aide de fichiers de configuration YAML ou JSON déclaratifs, qui définissent l’état souhaité des composants applicatifs. Les principaux composants sont les suivants :

  • Pods : Les plus petites unités déployables qui exécutent un ou plusieurs conteneurs
  • Services: Ils définissent la façon d'exposer votre application au réseau ou à d’autres parties du cluster.
  • Déploiements: Ils permettent de définir l'état souhaité d'une application et de gérer les mises à jour progressives.
  • ConfigMaps et secrets : Stockez les données de configuration et les informations sensibles séparément de l’image du conteneur

Déployer l’application

Les clusters sont déployés à l’aide de kubectl pour appliquer les fichiers de configuration, ce qui indique à Kubernetes de créer les ressources nécessaires pour atteindre l’état souhaité de votre application. Pendant ce temps, la configuration réelle nécessite pas mal d’ajustements.

  • Configurez le plan de contrôle : Configurez les nœuds maîtres avec les composants nécessaires, notamment kube-apiserver, etcd, kube-scheduler, kube-controller-manager. Dans une configuration hautement disponible, vous aurez besoin de plusieurs nœuds maîtres derrière un équilibreur de charge.
  • Configurez les nœuds de travail : Configurez les nœuds de travail avec les composants nécessaires, y compris kubelet, kube-proxy et le runtime de conteneur. Vous devrez peut-être configurer l'environnement d'exécution du conteneur, tel que Docker ou containerd, en fonction de vos préférences.
  • Configurer la mise en réseau : Kubernetes prend en charge différentes solutions de mise en réseau telles que Calico, Flannel ou Weave. Choisissez celui qui correspond le mieux à vos besoins et suivez la documentation du fournisseur pour la configuration.
  • Configurez le stockage : Configurez les classes de stockage et les provisions en fonction de la solution de stockage que vous avez choisie. Cela comprend la configuration de volumes locaux, de serveur de stockage en réseau ou de services de stockage dans le cloud. Il convient également de déployer une solution de sauvegarde fiable.
  • Configurez le contrôle d’accès en fonction du rôle : Définissez les rôles et les autorisations des utilisateurs et des applications pour qu’ils puissent accéder à l’API et aux ressources Kubernetes en toute sécurité.
  • Configurez la supervision et la journalisation : Configurez des outils de supervision, tels que Prometheus et Grafana, pour collecter des métriques et des journaux.
  • Configurez la sécurité : Mettez en œuvre les meilleures pratiques de sécurité, telles que la sécurisation du serveur d’API Kubernetes, le chiffrement des secrets et l’activation de stratégies réseau pour isoler les espaces de noms.

N’oubliez pas qu’il s’agit des étapes générales du déploiement et de la configuration d’un cluster Kubernetes. Le processus exact varie en fonction de l’option de déploiement choisie, de l’infrastructure et de vos exigences spécifiques.

Si Kubernetes nécessite une courbe d’apprentissage, ses puissantes abstractions et ses outils facilitent la gestion des applications conteneurisées à grande échelle. Avec de la pratique et de l’expérience, vous constaterez que travailler avec Kubernetes devient plus intuitif au fil du temps. De nombreuses ressources sont également disponibles en ligne pour vous aider à apprendre et à maîtriser cette puissante technologie de conteneurisation.

Gestion des clusters Kubernetes

Pour la supervision, Kubernetes fournit des outils intégrés permettant de maintenir l’intégrité et les performances du cluster. Parallèlement, il existe aussi des outils et des plateformes externes et tiers qui fournissent une supervision, une journalisation et des alertes avancées.

Kubernetes facilite la mise à l'échelle des applications vers le haut ou vers le bas en fonction de la demande, soit manuellement, soit automatiquement, en utilisant le Horizontal Pods Autoscaler, également appelé HPA. Vous pouvez assurer la longévité des performances de votre application en la sécurisant et en la mettant à jour. Vous pouvez effectuer des mises à jour progressives de votre application sans interruption en mettant à jour la configuration du déploiement.

Comment se lancer avec Veeam

Se lancer dans Kubernetes peut sembler intimidant, mais avec une approche et des ressources appropriées, vous pouvez rapidement acquérir des compétences. Commencez par explorer les solutions courantes et les meilleures pratiques au sein de l’écosystème Kubernetes. Réfléchissez aux besoins spécifiques de votre entreprise et découvrez comment Kubernetes combiné à la solution de sauvegarde native de Veeam peut y répondre.

Lorsque vous êtes prêt à vous lancer, découvrez Veeam Kasten, une solution de sauvegarde native de nouvelle génération spécifiquement conçue et développée pour Kubernetes. Inscrivez-vous gratuitement à la version communautaire et commencez à élaborer votre stratégie de sauvegarde dès aujourd'hui. N’oubliez pas qu’un environnement Kubernetes bien orchestré est incomplet sans une protection fiable des données. Faites de Veeam votre compagnon de confiance dans l’aventure de la conteneurisation avec Kubernetes.

C'est parti !

5 raisons

Regardez une démonstration

Découvrez comment assurer la résilience des données contre tous types de menaces grâce à Veeam

5 raisons

Contactez-nous

Nous sommes à vos côtés pour vous aider à trouver la solution qui assurera la fluidité de vos opérations.

5 raisons

Forums R&D Veeam

Obtenez de l’aide sur vos produits et logiciels Veeam