Qu’est-ce qu’Azure Kubernetes Service ?

Effectué

Commençons par quelques définitions et une rapide visite guidée d’Azure Kubernetes Service (AKS). Cette vue d’ensemble fournit des informations pour vous aider à déterminer si AKS est une bonne plateforme pour votre stratégie de gestion de la conteneurisation.

Qu’est-ce qu’un conteneur ?

Un conteneur est une unité atomique de logiciel qui contient le code, les dépendances et la configuration d’une application spécifique. Les conteneurs vous permettent de diviser des applications monolithiques en services individuels qui constituent la solution. En reconstruisant notre application, nous pouvons déployer ces services distincts en utilisant des conteneurs.

Schéma montrant un serveur ou une application répliqués comme conteneurs pour le déploiement cloud.

Pourquoi utiliser un conteneur ?

Supposons que votre solution de suivi des ressources incluait trois principales applications :

  • Un site web de suivi qui inclut des plans et des informations sur les ressources actuellement suivies.

  • Un service de traitement des données qui collecte et traite les informations envoyées à partir de ressources suivies.

  • Une base de données MSSQL pour stocker les informations client recueillies à partir du site web.

Vous réalisez que vous devez effectuer un scale-out de votre solution pour répondre à la demande des clients.

Machines virtuelles

Une option consiste à déployer pour chaque application une nouvelle machine virtuelle hébergée dans plusieurs régions. Ensuite, copiez les applications sur vos nouvelles machines virtuelles. Toutefois, avec cette option, vous devez gérer chaque machine virtuelle que vous utilisez.

La surcharge de maintenance augmente à mesure que vous effectuez une mise à l’échelle. Les versions et les dépendances du système d’exploitation de machines virtuelles pour chaque application doivent être approvisionnées et configurées à des fins de correspondance. Lorsque vous appliquez des mises à niveau pour vos applications qui affectent le système d’exploitation et les modifications majeures, vous devez prendre certaines précautions. Si des erreurs s’affichent pendant la mise à niveau, la restauration de l’installation est requise et provoque des interruptions, telles que des temps d’arrêt ou des retards.

Diagramme montrant des serveurs répliqués comme machines virtuelles dans le cloud et en quoi ce problème soulève des questions et des problèmes de migration.

Le déploiement décrit dans le diagramme ci-dessus est fastidieux, parfois sujet aux erreurs et ne peut pas facilement mettre à l’échelle des services individuels. Par exemple, vous ne pouvez pas facilement mettre à l’échelle uniquement le service caching utilisé dans l’application web. Les conteneurs permettent de résoudre ces types de problèmes.

Le concept de conteneur nous offre trois avantages majeurs :

  1. Immuabilité : De par sa nature immuable, un conteneur peut être déployé et exécuté de manière fiable avec le même comportement d’un environnement de calcul à l’autre. Une image conteneur testée dans un environnement de contrôle qualité est la même image de conteneur déployée en production.

  2. Taille plus petite : Un conteneur est similaire à une machine virtuelle, mais sans le noyau de chaque machine. En revanche, ils partagent un noyau hôte. Les machines virtuelles utilisent un fichier image volumineux pour stocker le système d’exploitation et l’application que vous souhaitez exécuter. En revanche, un conteneur n’a pas besoin d’un système d’exploitation, uniquement de l’application.

  3. Léger : Le conteneur s’appuie toujours sur le système d’exploitation installé sur l’hôte pour les services spécifiques au noyau. La propriété légère rend les conteneurs moins gourmands en ressources, de sorte que l’installation de plusieurs conteneurs est possible dans un même environnement de calcul.

  4. Démarrage rapide : les conteneurs démarrent en quelques secondes, contrairement aux machines virtuelles, qui peuvent prendre plusieurs minutes.

Ces avantages font des conteneurs un choix plébiscité aussi bien par les développeurs que les services informatiques, et expliquent pourquoi beaucoup les choisissent au détriment des machines virtuelles.

Qu’est-ce que la gestion des conteneurs ?

Diagramme montrant des serveurs répliqués comme plusieurs conteneurs dans le cloud.

Même si fonctionnellement, les conteneurs sont similaires aux machines virtuelles, leurs objectifs varient. Un conteneur a un cycle de vie distinct qui existe en tant que machine temporaire. Son état passe par les étapes En attente, En cours d’exécution et Terminé. Ce cycle de vie rend les conteneurs plus supprimables et impacte la façon dont les développeurs et les services informatiques conçoivent la gestion des applications interconnectées volumineuses. La gestion des conteneurs implique le déploiement, la mise à niveau, la surveillance et la suppression de conteneurs.

Par exemple, imaginons que vous découvrez une hausse du trafic sur le site à midi. Par conséquent, vous avez besoin de plus d’instances du service caching du site pour gérer les performances. Vous entendez résoudre ce problème en ajoutant des conteneurs supplémentaires du service caching.

Maintenant, il est temps de déployer une nouvelle version de votre service caching. Comment mettre à jour tous les conteneurs ? Comment supprimer toutes les versions plus anciennes ?

Ces types de questions d’équilibrage de charge nécessitent un système pour gérer votre déploiement de conteneurs.

Qu’est-ce que Kubernetes ?

Kubernetes est une plateforme open source extensible et portable permettant d’automatiser le déploiement, la mise à l’échelle et la gestion des charges de travail conteneurisées. Kubernetes simplifie la complexité de la gestion des conteneurs en nous fournissant une configuration déclarative pour orchestrer les conteneurs dans différents environnements de calcul. Cette plateforme d’orchestration nous offre la même simplicité d’utilisation et la même flexibilité qu’avec les offres PaaS (Platform as a Service) et IaaS (Infrastructure as a Service).

Diagramme montrant des serveurs répliqués comme plusieurs conteneurs dans un cluster Kubernetes.

Kubernetes vous permet de voir votre centre de données comme un grand ordinateur. Nous n’avons pas à nous soucier du où et du comment déployer nos conteneurs, mais uniquement du déploiement et de la mise à l’échelle de nos applications selon nos besoins.

Voici quelques autres aspects à retenir sur Kubernetes :

  • Kubernetes n’est pas une offre PaaS complète. Il fonctionne au niveau du conteneur et offre uniquement un ensemble commun de fonctionnalités PaaS.

  • Kubernetes n’est pas monolithique. Il ne s’agit pas d’une application qui est installée. Les aspects, tels que le déploiement, la mise à l’échelle, l’équilibrage de charge, la journalisation et la supervision, sont tous facultatifs.

  • Kubernetes ne limite pas les types d’applications à exécuter. Si votre application peut s’exécuter dans un conteneur, elle s’exécute sur Kubernetes.

  • Vos développeurs doivent comprendre les concepts, tels que l’architecture de microservices, afin d’optimiser l’utilisation des solutions de conteneur.

  • Kubernetes ne fournit pas de middlewares, d’infrastructures de traitement de données, de bases de données, de caches ou de systèmes de stockage de clusters. Tous ces éléments sont exécutés en tant que conteneurs ou dans le cadre d’une autre offre de service.

  • Un déploiement Kubernetes est configuré comme un cluster. Un cluster se compose d’au moins un ordinateur principal ou d’un plan de contrôle et d’un ou plusieurs ordinateurs worker. Pour les déploiements en production, la configuration préférée est un déploiement à haute disponibilité avec trois à cinq ordinateurs de plan de contrôle répliqués qui sont appelés nœuds ou nœuds d’agent.

Fort de tous les avantages qu’offre Kubernetes, vous êtes responsable de trouver la meilleure solution adaptée à vos besoins pour gérer ces aspects. N’oubliez pas que vous êtes responsable de la maintenance de votre cluster Kubernetes. Par exemple, vous devez gérer les mises à niveau du système d’exploitation, ainsi que l’installation et les mises à niveau de Kubernetes. Vous gérez également la configuration matérielle des ordinateurs hôtes, comme le réseau, la mémoire et le stockage.

Notes

Kubernetes apparaît parfois sous la forme abrégée K8s. 8 représente les huit caractères entre le K et le S du mot K[ubernete]s.

Qu’est-ce qu’Azure Kubernetes Service (AKS) ?

Diagramme montrant des serveurs répliqués comme plusieurs conteneurs dans un cluster Kubernetes AKS.

AKS gère votre environnement Kubernetes hébergé et simplifie le déploiement et la gestion des applications conteneurisées dans Azure. Votre environnement AKS présente des fonctionnalités telles que les mises à jour automatiques, la réparation automatique et la mise à l’échelle facile. Azure gère gratuitement le plan de contrôle de votre cluster Kubernetes. Vous gérez les nœuds d’agent dans le cluster et payez uniquement pour les machines virtuelles sur lesquelles s’exécutent vos nœuds.

Vous pouvez créer et gérer votre cluster dans le portail Azure ou avec Azure CLI. Il existe des modèles Resource Manager pour automatiser la création du cluster. Ces modèles vous donnent accès à des fonctionnalités telles que les options de mise en réseau avancées, Microsoft Entra Identity et la surveillance des ressources. Ensuite, vous pouvez configurer des déclencheurs et des événements pour automatiser le déploiement du cluster pour plusieurs scénarios.

Avec AKS, vous bénéficiez des avantages de Kubernetes open source sans la complexité ou la surcharge opérationnelle ajoutée relative à l’utilisation de Kubernetes uniquement.