Estimation de la taille du cluster : nœuds

Effectué

Vous devez maintenant déterminer le type de nœuds de machine virtuelle dont vous avez besoin et le nombre de nœuds que vous devez exécuter.

De quelle taille de machine virtuelle avez-vous besoin ?

Dans Azure Kubernetes Service (AKS), chaque nœud de votre cluster est une machine virtuelle Azure. Les machines virtuelles ont différentes spécifications pour permettre la prise en charge des demandes des différents types d’application. Certaines applications pourraient nécessiter plus de puissance de traitement, plus de mémoire ou un stockage plus rapide. Vous devez sélectionner une catégorie de machine virtuelle et une instance qui répond aux besoins de votre application.

Vous devez vérifier que le type dispose de suffisamment de mémoire et de puissance de traitement pour votre application. Gardez à l’esprit que la mémoire et la puissance de traitement ne sont pas disponibles en totalité pour votre application. Une partie de sa puissance est nécessaire au système d’exploitation et aux composants système Kubernetes. AKS réserve automatiquement une certaine quantité de mémoire et de puissance de calcul pour garantir le bon fonctionnement de ces composants système critiques.

Le type de machine virtuelle par défaut déployé dans le cadre d’un cluster AKS est une machine virtuelle à usage général D2 v3 à deux cœurs virtuels et 8 gigaoctets de mémoire. AKS réserve 100 millicœurs de processeur et 3,55 Gio de mémoire, ce qui laisse 1 900 millicœurs (1,9 cœur) et 5,45 Gio de mémoire disponibles pour votre application.

Conseil

La quantité de processeur et de mémoire réservée varie en fonction du type de machine virtuelle que vous sélectionnez. Cette quantité devient proportionnellement plus petite à mesure que la taille de la machine virtuelle augmente.

Prenez également en compte les ressources inexploitées. Supposons que vous déployiez trois applications sur un nœud D2 v3. Chacune de ces applications nécessite 600 millicœurs de processeur et 500 Mio de mémoire. Une fois que vous avez déployé ces applications, il reste 100 millicores de processeur, et environ 2,05 Gio de mémoire inutilisée. Si vous déployez une quatrième instance de l’application, vous devriez l’envoyer vers un nouveau nœud, car les 100 millicœurs restants ne sont pas suffisants. Toutefois, il reste maintenant 2 Gio de mémoire sur le nœud qui ne peuvent pas être utilisés. Cette ressource de mémoire est dite inexploitée.

Le choix idéal d’une machine virtuelle est une machine ayant une capacité suffisante pour exécuter vos charges de travail sans laisser de ressources inexploitées. Si les charges de travail font l’objet de scale-up ou de scale-down dynamiques, vous devez disposer de suffisamment de ressources pour couvrir les scénarios d’usage classiques, tout en ayant la flexibilité nécessaire pour effectuer un scale-up en cas de besoin.

De combien de nœuds avez-vous besoin ?

Votre application doit toujours être disponible et capable de gérer les défaillances des nœuds sous-jacents. Vous pouvez fournir une résilience avec plusieurs réplicas de l’application réparties sur plusieurs nœuds.

AKS dispose de pools de nœuds, qui sont des groupes de machines virtuelles du même type. Vous pouvez avoir plusieurs pools de nœuds. Par exemple, vous pouvez avoir un pool de nœuds qui contient des machines virtuelles à usage général, un pool de nœuds avec des machines virtuelles à mémoire optimisée et un pool de nœuds avec des machines virtuelles dotées d’un GPU. Vous devez ensuite utiliser les fonctionnalités de planification natives de Kubernetes pour vérifier si les charges de travail sont déployées sur le pool de nœuds et le type de machine virtuelle appropriés.

Les pools de nœuds peuvent prendre en charge l’un des deux modes suivants : Système ou Utilisateur. Les pools de nœuds en mode Système exécutent les pods système critiques, qui sont essentiels au fonctionnement de votre cluster Kubernetes, notamment les services tels que les pilotes de stockage, le DNS ou les serveurs de métriques. Les pools de nœuds en mode Utilisateur exécutent vos applications.

Dans une configuration par défaut, un cluster AKS contient un seul pool de nœuds en mode Système, qui permet de tout exécuter. Si vous le souhaitez, vous pouvez ajouter des pools de nœuds en mode Système ou Utilisateur supplémentaires et configurer vos pods d’application pour qu’ils s’exécutent exclusivement dans les pools de nœuds en mode Utilisateur. Les pods système critiques s’exécutent uniquement dans les pools de nœuds en mode Système. L’utilisation de pools de nœuds en mode Système et Utilisateur peut empêcher les applications mal configurées d’affecter le fonctionnement des services système critiques et de provoquer éventuellement l’échec du cluster.

Kubernetes peut également ajouter ou supprimer des nœuds si nécessaire. Si vous comptez utiliser cette fonctionnalité, vous devez définir une limite supérieure pour le nombre maximal de nœuds pouvant faire l’objet d’un scale-up par Kubernetes. Planifiez ensuite la conception de votre réseau en fonction de cette valeur maximale. N’oubliez pas que vous devez prendre en compte au moins un nœud supplémentaire par cluster pour permettre au processus de mise à jour de s’exécuter correctement.

Conseil

Vous pouvez configurer le nombre de nœuds mis à jour simultanément, un étant la valeur par défaut. La mise à niveau de plusieurs nœuds à la fois peut réduire le temps global nécessaire à la mise à niveau d’un cluster. Vous devez prendre en compte des nœuds supplémentaires dans le cadre de votre planification.

Combien de nœuds devez-vous exécuter ?

Pour déterminer le nombre de nœuds à exécuter, vous devez bien comprendre les besoins de l’application en termes de processeur et de mémoire. L’équipe de développement vous a fourni les résultats du test de performance ainsi que des détails sur la quantité de ressources nécessaires aux services en termes de processeur et de mémoire. Les résultats incluent les besoins de référence ainsi que les quantités maximales pendant les périodes les plus chargées :

Service Valeur min./max. pour le processeur Valeur min./max. pour la mémoire
Front-end du site web 250 m / 1 000 m 250 Mio / 1 Gio
API d’identité 100 m / 500 m 250 Mio / 500 Mio
API Catalogue 500 m - 1 000 m 1 Gio / 1 Gio
API de commandes 100 m - 1 000 m 100 Mio / 1 Gio
Assistance des commandes 100 m - 1 000 m 100 Mio / 1 Gio
Api de panier 100 m - 1 000 m 500 Mio / 500 Mio
API de marketing 250 m - 750 m 500 Mio / 1 Gio
API de localisations 100 m - 500 m 100 Mio / 500 Mio

Conseil

  • Kubernetes mesure l’utilisation du processeur en millicœurs, ou en millièmes de cœur. Ainsi, 100 m équivalent à un dixième de cœur et 1000 m à un seul cœur de processeur.
  • Vous pouvez mesurer la mémoire de plusieurs façons. Les exemples du graphique des résultats du test de performance utilisent Mi et Gi, qui sont la puissance de deux équivalents du mégaoctet et du gigaoctet. Généralement, 500 Mi désignent 500 mégaoctets, et 1 Gi désigne 1 gigaoctet.

Dimensionnement de vos nœuds

Vous avez déterminé le nombre minimal de réplicas que chaque service doit exécuter et le nombre minimal de cœurs de processeur et de mémoire requis par chaque service. Ce calcul vous donne un total de 1,5 cœur et 2,8 Gio de mémoire comme point de départ. Lorsque l’application effectue un scale-up jusqu’à son nombre maximal de réplicas et utilise son nombre maximal de cœurs de processeur et sa quantité de mémoire, elle a besoin de 53 cœurs et de 50 Go de mémoire.

Dans ce scénario, les charges de travail utilisent de façon intensive les ressources au niveau du processeur. Si vous optez pour la machine virtuelle universelle à usage général D2 v3 par défaut, il vous en faut en grand nombre pour répondre aux besoins de la charge de travail au niveau du processeur. Cette configuration va entraîner une grande quantité de mémoire inutilisée sur les machines virtuelles. Prenons l’exemple d’un type de machine virtuelle destiné aux charges de travail nécessitant beaucoup de ressources de calcul. Par exemple, une sélection dans la série Fsv2 nécessiterait moins de machines virtuelles pour répondre aux exigences du processeur et aurait une quantité inférieure de mémoire inutilisée.

Une machine virtuelle de type F8s v2 a 8 cœurs et 16 Go de mémoire. Avec les réservations de ressources AKS, vous avez 7820 millicores et 12,65 Gio pour chaque nœud. À l’échelle maximale, vous avez besoin de sept machines virtuelles pour gérer vos charges de travail.

Maintenant, vous devez examiner le réseau.