Définissez le nombre attendu de nœuds pour un pool de nœuds afin d'augmenter la capacité face à la croissance du trafic ou de réduire les coûts en diminuant cette capacité.
ACK prend en charge la mise à l'échelle automatique des nœuds ou la mise à l'échelle instantanée des nœuds pour ajuster les ressources des nœuds en fonction de la charge de travail.
Fonctionnement
Le champ Expected Nodes définit le nombre cible de nœuds pour un pool de nœuds. Une fois la modification envoyée, ACK aligne le nombre réel de nœuds sur cette cible en créant ou en supprimant des instances ECS selon les besoins.
Scale out : augmentez la valeur Expected Nodes au-delà du nombre actuel. ACK provisionne des instances ECS via Auto Scaling, exécute le script cloud-init sur chacune d'elles, puis les ajoute au pool. En cas d'échec de création, ACK réessaie automatiquement. Les types d'instance et les zones dépendent de la politique de mise à l'échelle du pool de nœuds.
Scale in : diminuez la valeur Expected Nodes en dessous du nombre actuel. Seules les instances ECS en paiement à l'utilisation sont libérées lors d'une réduction de capacité. Le cycle de vie du disque système et des disques de données d'un nœud est lié à celui du nœud. Lorsqu'un nœud est libéré lors d'une réduction, ses disques le sont également et toutes les données qu'ils contiennent sont définitivement perdues et irrécupérables. Pour les données nécessitant une persistance, gérez-les via un PersistentVolume (PV) afin de découpler le stockage du cycle de vie du nœud.
Lorsqu'une réduction de capacité est déclenchée par la modification de la valeur Expected Nodes, ACK supprime les nœuds même si l'évacuation (drain) échoue. Si vous avez une exigence stricte en matière d'évacuation, supprimez manuellement le nœud cible. Consultez la rubrique Supprimer un nœud.
L'ordre de suppression lors d'une réduction de capacité dépend de la politique de mise à l'échelle :
| Politique de mise à l'échelle | Ordre de suppression |
|---|---|
| Priority | Les instances nouvellement créées sont supprimées en premier. |
| Distribution balancing | Les zones sont filtrées selon la politique ; les instances nouvellement créées sont supprimées en premier pour équilibrer les comptes entre les zones. |
| Cost optimization | Les instances sont supprimées par ordre décroissant du prix par vCPU. |
Facturation lors de l'augmentation de capacité
La facturation repose sur les spécifications réelles des instances ECS créées. Par exemple, avec deux types d'instance, une facturation en paiement à l'utilisation et la politique de mise à l'échelle Priority :
Deux instances Node A sont créées dans la zone du vSwitch prioritaire.
Si l'inventaire de Node A est insuffisant, trois instances Node B sont créées dans la zone du vSwitch secondaire.
Coût pour une heure = (Prix unitaire de Node A × 2 × 1) + (Prix unitaire de Node B × 3 × 1).
Pools de nœuds GPU
Lors de l'ajout d'instances issues des familles d'instances bare metal ECS ebmgn7 ou ebmgn7e, ACK réinitialise toute configuration Multi-Instance GPU (MIG) conservée sur ces instances. Cette réinitialisation prend du temps et peut empêcher les instances de rejoindre le cluster.
Pour résoudre les problèmes d'échec de jonction, consultez la rubrique Que faire en cas d'échec d'ajout d'instances bare metal ECS ?
Consultez la documentation relative aux familles d'instances optimisées pour le calcul accéléré par GPU (séries gn, ebm et scc).
Prérequis
Assurez-vous de disposer des éléments suivants :
Un cluster ACK avec au moins un pool de nœuds
(Facultatif, utilisateurs RAM) Le rôle AliyunOOSLifecycleHook4CSRole est attribué à votre compte Alibaba Cloud, et la stratégie AliyunRAMReadOnlyAccess est attachée à l'utilisateur RAM.
Mettre à l'échelle un pool de nœuds
N'exécutez pas la commande kubectl delete node. Cela supprime les nœuds de Kubernetes sans libérer leurs instances ECS, ce qui entraîne une perte de suivi de la capacité par le pool de nœuds. Utilisez la console ACK pour mettre à l'échelle les pools de nœuds.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Nodes > Node Pools.
Localisez le pool de nœuds à mettre à l'échelle et cliquez sur Scale dans la colonne Actions.
-
(Facultatif) Si CloudOps Orchestration Service (OOS) n'a pas été autorisé, cliquez sur AliyunOOSLifecycleHook4CSRole pour créer le rôle et finaliser l'autorisation.
Si vous utilisez un utilisateur RAM, assurez-vous que le compte Alibaba Cloud dispose du rôle AliyunOOSLifecycleHook4CSRole avant d'attacher la stratégie AliyunRAMReadOnlyAccess à l'utilisateur RAM.
-
Définissez la valeur Expected Nodes et confirmez la modification. La colonne Status affiche successivement les états Updating, Scaling Out (ou Removing), puis Active.
Lorsque l'état indique Scaling Out, le pool de nœuds est en cours d'augmentation de capacité. Lorsque l'état revient à Active, l'opération est terminée.
Lorsque l'état indique Removing, le pool de nœuds est en cours de réduction de capacité. Lorsque l'état revient à Active, l'opération est terminée.
ImportantSi le groupe de sécurité du cluster bloque l'accès à
100.64.0.0/10, les nouveaux nœuds ne peuvent pas rejoindre le cluster.
Pour afficher les détails de la tâche d'augmentation de capacité, cliquez sur le nom du pool de nœuds, puis ouvrez l'onglet Scaling Activities.
Affichez le journal opérationnel sur un nœud :
grep cloud-init /var/log/messages
Après qu'un nœud a rejoint le pool, /var/log/messages est effacé et ne conserve que les entrées d'échec de jonction. Si un nœud échoue à rejoindre le cluster, le journal est synchronisé avec le résultat de la tâche dans l'onglet Cluster Tasks .
Opérations à éviter
Les opérations suivantes contournent le mécanisme de comptage attendu et peuvent provoquer des boucles de réconciliation ou une perte de données.
| Opération | Conséquence | Action recommandée |
|---|---|---|
Supprimer des nœuds avec kubectl delete node |
ACK suit le nombre attendu de nœuds par rapport aux instances ECS dans le groupe de mise à l'échelle, et non par rapport à la liste des nœuds Kubernetes. L'instance ECS continue de fonctionner, mais le nœud apparaît comme Unknown. | Cliquez sur le nom du pool de nœuds, ouvrez l'onglet Nodes et supprimez les nœuds. Sélectionnez Release ECS Instance si nécessaire. Les nœuds ajoutés manuellement et les nœuds sous abonnement doivent être libérés depuis la console ECS. |
| Libérer directement des instances ECS depuis la console ECS ou via l'API | Le pool de nœuds détecte l'écart et crée de nouvelles instances ECS pour restaurer le nombre attendu. | Utilisez la console ACK pour supprimer les nœuds. Consultez la rubrique Supprimer un nœud. Les nœuds ajoutés manuellement et les nœuds sous abonnement nécessitent une libération manuelle depuis la console ECS. |
| Supprimer des instances ECS du groupe de mise à l'échelle dans la console Auto Scaling (sans modifier le nombre attendu) | Le pool de nœuds détecte la modification et crée des instances de remplacement. | Ne modifiez pas directement les groupes de mise à l'échelle utilisés par les pools de nœuds dans la console Auto Scaling. |
| Laisser expirer les instances ECS sous abonnement | Le pool de nœuds détecte la libération et crée des instances de remplacement. | Supprimez ou renouvelez les instances sous abonnement avant leur expiration. Consultez les rubriques Supprimer un nœud et Renouveler une instance sous abonnement. |
| Activer les contrôles de santé sur le groupe de mise à l'échelle dans la console Auto Scaling | Lorsqu'un contrôle de santé identifie une instance non saine (par exemple, suspendue), Auto Scaling crée une instance ECS de remplacement. | Les contrôles de santé sont désactivés par défaut pour les groupes de mise à l'échelle utilisés par ACK. Ne modifiez pas ces paramètres. |
Résoudre les échecs de mise à l'échelle
En cas d'échec de la mise à l'échelle, cliquez sur le nom du cluster dans la page Clusters, ouvrez l'onglet Cluster Tasks et cliquez sur View Cause pour afficher les détails de l'erreur.
| Code d'erreur | Cause | Solution |
|---|---|---|
RecommendEmpty.InstanceTypeNoStock |
Inventaire ECS insuffisant dans la zone actuelle. | Modifiez le pool de nœuds pour ajouter des vSwitches dans différentes zones et configurer plusieurs types d'instance. Consultez la rubrique Vérifier l'évolutivité d'un pool de nœuds. |
NodepoolScaleFailed.FailedJoinCluster |
Échec de la jonction des nœuds au cluster ACK. | Connectez-vous au nœud et exécutez la commande grep cloud-init /var/log/messages pour vérifier l'erreur. |
InvalidAccountStatus.NotEnoughBalance / InsufficientBalance.CreditPay / Account.Arrearage |
Solde de compte insuffisant. | Rechargez votre compte. |
InvalidParameter.NotMatch (incompatibilité du mode de démarrage) |
Le type d'instance ne prend pas en charge le mode de démarrage (BIOS) de l'image du système d'exploitation. | Sélectionnez un autre type d'instance. Vérifiez le système d'exploitation et l'ID de l'image dans l'onglet Overview du pool de nœuds. Appelez l'API DescribeImageSupportInstanceTypes pour interroger les types d'instance pris en charge. |
QuotaExceed.ElasticQuota |
Quota ECS dépassé pour le type d'instance spécifié dans la région actuelle. | Sélectionnez un autre type d'instance, réduisez le nombre d'instances ECS existantes ou demandez une augmentation de quota via le Quota Center. |
InvalidResourceType.NotSupported |
Le type d'instance n'est pas pris en charge ou est en rupture de stock dans la zone actuelle. | Appelez l'API DescribeAvailableResource pour trouver les types d'instance pris en charge dans la zone, puis mettez à jour le pool de nœuds. |
InvalidImage.NotSupported |
L'image du système d'exploitation ne prend pas en charge les instances sécurisées renforcées. | Sélectionnez un autre type d'instance. Consultez la rubrique Créer une instance approuvée dans la console ECS pour connaître les images prises en charge. |
InvalidParameter.NotMatch (incompatibilité de l'image vTPM) |
L'image du système d'exploitation nécessite un type d'instance avec vTPM activé. | Sélectionnez un autre type d'instance. Vérifiez le système d'exploitation et l'ID de l'image dans l'onglet Overview du pool de nœuds. |
QuotaExceeded.PrivateIpAddress |
Le vSwitch actuel ne dispose plus d'adresses IP privées disponibles. | Ajoutez davantage de vSwitches au pool de nœuds et réessayez. |
InvalidParameter.KmsNotEnabled |
La clé Key Management Service (KMS) est désactivée. | Connectez-vous à la console KMS et activez la clé. |
InvalidInstanceType.NotSupported |
Le type d'instance ne prend pas en charge l'architecture de l'image du système d'exploitation. | Sélectionnez un autre type d'instance. Appelez l'API DescribeImageSupportInstanceTypes pour interroger les types d'instance compatibles. Consultez la rubrique Images du système d'exploitation pour connaître les images prises en charge par ACK. |
ApiServer.InternalError / Err.QueryEndpoints |
Le serveur API du cluster ACK est inaccessible. | Vérifiez l'accessibilité du serveur API. Consultez la rubrique Résoudre les problèmes d'accès au cluster dans la console ACK. |
RecommendEmpty.InstanceTypeNotAuthorized |
Absence d'autorisation pour utiliser le type d'instance spécifié. | Soumettre un ticket pour demander des autorisations ECS. |
RecommendEmpty.DiskTypeNoStock |
Inventaire de disques cloud insuffisant dans la zone. | Ajoutez davantage de vSwitches ou sélectionnez un autre type de disque. |
InvalidParameter.KMSKeyId.KMSUnauthorized |
Absence d'autorisation pour accéder à KMS. | Dans la console ECS, attribuez le rôle AliyunECSDiskEncryptDefaultRole à ECS. Consultez la rubrique Autorisations liées au chiffrement. |
InvalidParameter.Conflict |
Le type de disque cloud n'est pas compatible avec le type d'instance. | Sélectionnez un autre type d'instance ou de disque. |
NotSupportSnapshotEncrypted.DiskCategory |
Le chiffrement du disque système nécessite un disque ESSD. | Sélectionnez un disque ESSD. Pour les types de disques et le chiffrement, consultez la rubrique Types de disques et chiffrement. |
ScalingActivityInProgress |
Le pool de nœuds est déjà en cours de mise à l'échelle. | Attendez que l'activité de mise à l'échelle en cours se termine avant de réessayer. Ne mettez pas à l'échelle les pools de nœuds directement dans la console Auto Scaling. |
Instance.StartInstanceFailed |
Échec du démarrage des instances ECS. | Réessayez. Si le problème persiste, soumettez un ticket à l'équipe ECS. |
OperationDenied.NoStock |
Le type d'instance est en rupture de stock dans la zone spécifiée. | Sélectionnez un autre type d'instance. Consultez la rubrique Vérifier l'évolutivité d'un pool de nœuds. |
NodepoolScaleFailed.WaitForDesiredSizeTimeout |
Expiration du délai de la tâche d'augmentation de capacité. | Dans la console ACK, accédez à Clusters > nom du cluster > Nodes > Node Pools, cliquez sur le nom du pool de nœuds et ouvrez l'onglet Scaling Activities pour afficher les détails de la tâche. |
ApiServer.TooManyRequests |
Le serveur API Kubernetes a limité la requête. | Réduisez la fréquence des requêtes ou réessayez ultérieurement. |
NodepoolScaleFailed.PartialSuccess |
Échec de la création de certains nœuds en raison d'un inventaire insuffisant. | Modifiez les types d'instance configurés pour le pool de nœuds. Consultez la rubrique Vérifier l'évolutivité d'un pool de nœuds. Consultez la rubrique Modifier un pool de nœuds. |
Étapes suivantes
Supprimer un nœud — opérations et précautions pour la suppression de nœuds d'un pool de nœuds.
Maintenance des pools de nœuds — mise à niveau, réparation automatique et application des correctifs CVE du système d'exploitation pour les pools de nœuds.
Bonnes pratiques pour les nœuds et les pools de nœuds — ensembles de déploiement, pools de nœuds basés sur des instances préemptibles, etc.