Utilisation de l'outil de redimensionnement automatique de cluster Kubernetes
Découvrez comment utiliser l'outil de redimensionnement automatique de cluster Kubernetes pour redimensionner automatiquement les pools de noeuds gérés sur un cluster que vous avez créé à l'aide de Kubernetes Engine (OKE).
Vous ne pouvez pas utiliser l'outil de redimensionnement automatique de cluster Kubernetes avec des pools de noeuds virtuels.
Vous pouvez utiliser l'outil de redimensionnement automatique de cluster Kubernetes pour redimensionner automatiquement les pools de noeuds gérés d'un cluster en fonction de demandes de charge globale d'application. En redimensionnant automatiquement les pools de noeuds d'un cluster, vous pouvez garantir la disponibilité de l'application et optimiser les coûts.
L'outil de redimensionnement automatique de cluster Kubernetes :
- ajoute des noeuds de processus actif à un pool de noeuds lorsqu'un pod ne peut pas être programmé dans le cluster en raison de contraintes de ressources insuffisantes,
- enlève des noeuds de processus actif d'un pool de noeuds lorsque des noeuds ont été sous-utilisés pendant une période prolongée et lorsque des pods peuvent être placés sur d'autres noeuds existants.
L'outil de redimensionnement automatique de cluster Kubernetes augmente ou réduit automatiquement la taille d'un pool de noeuds en fonction des demandes de ressource plutôt qu'en fonction de l'utilisation des ressources des noeuds du pool.
L'outil de redimensionnement automatique de cluster Kubernetes fonctionne par pool de noeuds. Utilisez un fichier de configuration afin d'indiquer les pools de noeuds à cibler pour l'augmentation et la réduction, les tailles minimale et maximale de chaque pool de noeuds et le mode d'exécution du redimensionnement automatique. Les pools de noeuds non référencés dans le fichier de configuration ne sont pas gérés par l'outil de redimensionnement automatique de cluster Kubernetes.
Pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes de redimensionner automatiquement les pools de noeuds d'un cluster en fonction de demandes de charge globale d'application, incluez toujours des limites de demande de ressource dans les spécifications de pod (requests:
sous resources:
).
Vous pouvez déployer l'outil de redimensionnement automatique de cluster Kubernetes sur un cluster Kubernetes de deux manières :
- en tant que programme autonome (reportez-vous à Utilisation de l'outil de redimensionnement automatique de cluster en tant que programme autonome)
- en tant qu'extension de cluster (reportez-vous à Utilisation de l'outil de redimensionnement automatique de cluster en tant qu'extension de cluster)
Pour plus d'informations, reportez-vous à la section relative à l'outil de redimensionnement automatique de cluster Kubernetes et à la foire aux questions sur GitHub.
Recommandations relatives à l'utilisation de l'outil de redimensionnement automatique de cluster Kubernetes dans des environnements de production
Tenez compte des recommandations suivantes :
- Ayez toujours au moins un pool de noeuds dans un cluster qui n'est pas géré par l'outil de redimensionnement automatique de cluster Kubernetes. Ce pool de noeuds est requis pour exécuter des extensions de cluster critiques et l'outil de redimensionnement automatique de cluster Kubernetes lui-même. Sachez également qu'il est de votre responsabilité de redimensionner manuellement les pools de noeuds qui ne sont pas gérés par l'outil de redimensionnement automatique de cluster Kubernetes.
- Définissez toujours plusieurs répliques pour le déploiement de l'outil de redimensionnement automatique de cluster Kubernetes dans le fichier de configuration. S'il n'existe qu'une seule réplique et que celle-ci est expulsée et ne peut pas être reprogrammée, l'outil de redimensionnement automatique de cluster Kubernetes ne peut pas créer plus de noeuds de processus actif.
- Dans le fichier de configuration, définissez
max-node-provision-time
sur 25 minutes. En général, les nouveaux noeuds de processus actif sont provisionnés et passent à la condition Prêt en beaucoup moins de temps que cela. Toutefois, lorsque de nombreux noeuds sont ajoutés en même temps à un pool de noeuds, leur provisionnement peut prendre plus de temps. La console affiche un avertissement à côté des noeuds de processus actif dont l'initialisation prend plus de 20 minutes. En supposant que les noeuds de processus actif passent à la condition Prêt dans le délai indiqué pourmax-node-provision-time
, vous pouvez ignorer l'avertissement. - Dans le fichier de configuration, vous indiquez le nombre maximal de noeuds autorisés dans le pool de noeuds. Assurez-vous que le nombre maximal de noeuds que vous spécifiez ne dépasse pas la limite de location de la forme de noeud de processus actif définie pour le pool de noeuds. L'outil de redimensionnement automatique de cluster Kubernetes ne crée jamais plus de noeuds que la limite de location. Si vous indiquez un nombre supérieur à la limite de location, l'outil de redimensionnement automatique de cluster Kubernetes tente régulièrement de créer des noeuds supplémentaires mais ne le fait pas tant que la limite de location n'a pas été augmentée.
- Lorsque vous définissez les clusters que l'outil de redimensionnement automatique de cluster Kubernetes doit gérer, nous vous recommandons de créer plusieurs pools de noeuds en spécifiant un domaine de disponibilité pour chacun d'eux.
- Concevez toujours les applications de sorte à tolérer les perturbations qui peuvent survenir lorsque l'outil de redimensionnement automatique de cluster Kubernetes enlève des noeuds de processus actif ou déplace des pods vers un autre noeud de processus actif avant d'enlever un noeud de processus actif sous-utilisé. Par exemple, concevez des applications qui tirent parti des budgets de perturbation de pod (reportez-vous à la rubrique relative à la spécification d'un budget de perturbation pour votre application dans la documentation Kubernetes).
- Ne modifiez pas manuellement les pools de noeuds gérés par l'outil de redimensionnement automatique de cluster Kubernetes. Par exemple, n'ajoutez pas et n'enlevez pas de noeuds en utilisant
kubectl
ou la console (ou l'interface de ligne de commande ou l'API Oracle Cloud Infrastructure). L'outil de redimensionnement automatique de cluster Kubernetes peut modifier ces modifications ou celles-ci peuvent modifier son comportement. Par exemple, si vous souhaitez enlever tous les noeuds d'un pool de noeuds géré par l'outil de redimensionnement automatique de cluster Kubernetes, utilisez toujours cet outil pour redimensionner le pool de noeuds à la valeur zéro.
Paramètres de l'outil de redimensionnement automatique de cluster Kubernetes pris en charge
Vous contrôlez la façon dont l'outil de redimensionnement automatique de cluster Kubernetes redimensionne les pools de noeuds d'un cluster à l'aide de paramètres de configuration.
Les paramètres de configuration que vous pouvez utiliser pour gérer les clusters créés par Kubernetes Engine et la manière de les indiquer varient selon que vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant que programme autonome ou en tant qu'extension de cluster.
-
Utilisation de l'outil de redimensionnement automatique de cluster Kubernetes en tant que programme autonome
Si vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant que programme autonome, vous devez indiquer les paramètres de configuration dans un fichier de configuration.
Lorsque vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant que programme autonome, vous ne pouvez pas utiliser les paramètres de configuration suivants pour gérer les clusters créés par Kubernetes Engine :
--node-autoprovisioning-enabled=true
: non pris en charge.--gpu-total
: non pris en charge (propre au fournisseur cloud).--expander=price
: non pris en charge (propre au fournisseur cloud).
A l'exception des paramètres ci-dessus, vous pouvez utiliser n'importe lequel des paramètres de configuration lorsque vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant que programme autonome.
Pour obtenir la liste complète des paramètres de configuration de l'outil de redimensionnement automatique de cluster Kubernetes, reportez-vous à la section relative aux paramètres de l'outil de redimensionnement automatique de cluster dans la FAQ relative à l'outil de redimensionnement automatique de cluster sur GitHub.
-
Utilisation de l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster
Si vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster, vous indiquez les paramètres de configuration dans un fichier de configuration (lors de l'utilisation de l'interface de ligne de commande ou de l'API) ou dans la console.
Lorsque vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster, vous ne pouvez pas utiliser les paramètres de configuration suivants pour gérer les clusters créés par Kubernetes Engine :
--node-autoprovisioning-enabled=true
: non pris en charge.--gpu-total
: non pris en charge (propre au fournisseur cloud).--expander=price
: non pris en charge (propre au fournisseur cloud).
Un certain nombre d'autres paramètres de configuration de l'outil de redimensionnement automatique de cluster Kubernetes ne sont pas non plus pris en charge lors de l'utilisation de l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster.
Pour obtenir la liste des paramètres de configuration pris en charge lors de l'utilisation de l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster, ainsi que les noms à utiliser lors de leur spécification, reportez-vous à Arguments de configuration de l'outil de redimensionnement automatique de cluster.
Remarques sur l'outil de redimensionnement automatique de cluster Kubernetes
Tenez compte des éléments suivants :
-
L'outil de redimensionnement automatique de cluster Kubernetes ajoute et enlève des noeuds dans les pools de noeuds existants dans les clusters existants. Plus précisément, l'outil de redimensionnement automatique de cluster Kubernetes :
- ne crée pas de clusters supplémentaires,
- ne crée pas de pools de noeuds supplémentaires,
- ne crée pas de pods supplémentaires ; l'ajout de pods est pris en charge par l'outil de redimensionnement automatique de pod horizontal (reportez-vous à Utilisation de l'outil de redimensionnement automatique de pod horizontal Kubernetes),
- n'ajuste pas les limites et les demandes d'UC et de mémoire pour les conteneurs ; l'ajustement des limites est pris en charge par l'outil de redimensionnement automatique de pod vertical (reportez-vous à Utilisation de l'outil de redimensionnement automatique de pod vertical Kubernetes).
-
Lorsque vous enlevez des noeuds de processus actif d'un pool de noeuds, l'outil de redimensionnement automatique de cluster Kubernetes respecte les règles de planification et d'expulsion de pod. Ces règles peuvent empêcher l'outil de redimensionnement automatique de cluster Kubernetes d'enlever un noeud de processus actif.
Par exemple, par défaut, l'outil de redimensionnement automatique de cluster Kubernetes n'enlèvera pas de noeuds exécutant des pods kube-system (tels que des pods coredns), à l'exception de DaemonSet ou de pods en miroir. Vous pouvez contrôler ce comportement à l'aide d'un paramètre de configuration (
skip-nodes-with-system-pods
lorsqu'il est déployé en tant que programme autonome,skipNodesWithSystemPods
lorsqu'il est déployé en tant qu'extension de cluster). Le paramètre est défini surtrue
par défaut.Pour plus d'informations, reportez-vous à la section qui indique les types de pod pouvant empêcher l'outil de redimensionnement automatique de cluster d'enlever un noeud dans la FAQ relative à l'outil de redimensionnement automatique de cluster sur GitHub.
- Si vous utilisez Terraform et l'outil de redimensionnement automatique de cluster Kubernetes pour gérer les pools de noeuds, Terraform risque d'annuler les modifications apportées à la taille d'un pool de noeuds par l'outil de redimensionnement automatique de cluster Kubernetes. Pour éviter ce comportement, utilisez la fonctionnalité
ignore_changes
de Terraform, qui est spécifiquement destinée aux situations dans lesquelles Terraform partage la responsabilité de gérer un seul objet avec un autre processus. Par exemple, lorsqu'une ressource est créée avec des données susceptibles de changer à l'avenir, mais que vous ne souhaitez pas que ces modifications de données potentielles affectent la ressource après sa création. Le méta-argumentignore_changes
indique les attributs de ressource que Terraform doit ignorer lors de la planification des mises à jour de l'objet distant associé. Pour plus d'informations, reportez-vous à Meta-Argument de cycle de vie dans la documentation Terraform.Par exemple :
resource "node_pool_1" "example" { # ... lifecycle { ignore_changes = [ node_config_details.size ] } }
- Lorsque vous mettez à niveau un cluster vers une nouvelle version de Kubernetes, il est de votre responsabilité de mettre à niveau manuellement l'outil de redimensionnement automatique de cluster Kubernetes pour le rendre compatible avec la nouvelle version de Kubernetes du cluster. L'outil de redimensionnement automatique de cluster Kubernetes n'est pas mis à niveau automatiquement.
- Pour utiliser l'outil de redimensionnement automatique de cluster Kubernetes afin de gérer un cluster que vous avez créé avec Kubernetes Engine, le cluster doit exécuter certaines versions de Kubernetes comme suit :
- Lorsque vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant que programme autonome, les clusters doivent exécuter Kubernetes version 1.17 ou ultérieure.
- Lorsque vous utilisez l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster, les clusters doivent exécuter Kubernetes version 1.25 ou ultérieure.
- Vous pouvez utiliser l'outil de redimensionnement automatique de cluster Kubernetes avec des pools de noeuds gérés, mais pas avec des pools de noeuds virtuels.