Assurer des ressources pour les mises à niveau des nœuds


Cette page explique comment vous assurer que vous pouvez utiliser des stratégies de mise à niveau de nœuds pour apporter des modifications aux nœuds de votre cluster. Nous vous recommandons de vérifier si votre projet dispose de ressources suffisantes pour mettre à jour vos pools de nœuds Google Kubernetes Engine (GKE) Standard en fonction de la stratégie que vous choisissez.

Ressources requises pour les mises à niveau des nœuds

Les mises à niveau de nœuds peuvent nécessiter que GKE crée temporairement des nœuds supplémentaires, en fonction de la stratégie et de la configuration de nœuds que vous avez choisies. De ce fait, GKE peut nécessiter des ressources supplémentaires pour mettre à niveau le pool de nœuds.

Tous les nœuds créés par GKE, y compris les nœuds utilisés pour les mises à niveau, sont soumis au quota de ressources de votre projet, à la disponibilité des ressources et à la capacité de réservation, pour les pools de nœuds avec une affinité de réservation spécifique.

Nous vous recommandons vivement de vérifier que vous disposez de ressources suffisantes si vous avez des exigences particulières liées au type de machine et des contraintes de capacité. Vous devrez peut-être configurer une stratégie qui nécessite moins de ressources pour vous assurer que vous pouvez mettre à niveau vos nœuds ou effectuer d'autres actions, comme créer une réservation. Pour en savoir plus, consultez la section Effectuer une mise à niveau dans un environnement à ressources limitées.

Ressources nécessaires pour différentes stratégies de mise à niveau

Les sections suivantes décrivent les ressources supplémentaires requises pour utiliser les stratégies de mise à niveau disponibles. Si vous rencontrez des problèmes de mise à niveau, vérifiez les opérations de mise à niveau et suivez les instructions pour résoudre les erreurs de mise à niveau.

Ressources pour les mises à niveau de surutilisation

Les mises à niveau de la surutilisation sont la stratégie de mise à niveau par défaut de nœuds. Comme les mises à niveau de surutilisation créent des VM supplémentaires (si maxSurge est défini sur une valeur supérieure à zéro) avant de drainer et de supprimer les anciens nœuds, les mises à niveau peuvent échouer si votre projet manque de ressources.

Si les ressources disponibles sont inférieures au nombre de nœuds spécifié dans maxSurge, le nombre de mises à niveau parallèles est inférieur à maxSurge plus maxUnavailable. Si vous ne disposez pas de capacité supplémentaire, découvrez comment effectuer la mise à niveau dans un environnement soumis à des contraintes de ressources.

Le tableau ci-dessous décrit des exemples illustrant différents comportements de mises à niveau :

Paramètres de mise à niveau Nombre de nœuds supplémentaires autorisés par les ressources disponibles Résultat
maxSurge : 5 maxUnavailable : 0 5 Met à jour cinq nœuds en parallèle.
maxSurge : 5 maxUnavailable : 0 2 Ne met à jour que deux nœuds en parallèle.
maxSurge : 5 maxUnavailable : 0 0 Échec de la mise à niveau, car les paramètres de mise à niveau ne permettent pas d'afficher des nœuds supplémentaires et de redémarrer ceux qui existent déjà. GKE continue de tenter la mise à niveau automatique jusqu'à ce que l'opération aboutisse.
maxSurge : 5 maxUnavailable : 1 5 Met à jour six nœuds en parallèle, tout en veillant à ce que le pool ne perde qu'un seul nœud de manière temporaire en raison de la mise à niveau.
maxSurge : 5 maxUnavailable : 1 2 Ne met à jour que trois nœuds en parallèle, tout en veillant à ce que le pool ne contienne qu'un seul nœud en raison de la mise à niveau.
maxSurge : 5 maxUnavailable : 1 0 Ne met à jour qu'un seul nœud à la fois en recréant chaque nœud au moyen d'une mise à niveau progressive.

Ressources pour les mises à niveau bleu-vert

Les mises à niveau bleu-vert doublent temporairement le nombre de nœuds dans un pool de nœuds, ce qui signifie que votre pool de nœuds a temporairement besoin de deux fois plus de ressources. Si vous ne disposez pas de ressources suffisantes et que vous avez configuré votre pool de nœuds pour utiliser cette stratégie, configurez les mises à niveau de la surutilisation si vous devez débloquer les mises à niveau. Lorsque vous configurez cette stratégie, veillez à configurer les paramètres de mise à niveau de la surutilisation qui fonctionnent avec les ressources disponibles pour les nœuds du pool de nœuds. Pour en savoir plus, consultez la section précédente, Ressources pour les mises à niveau de la surutilisation.

Vérifier les opérations de mise à niveau pour détecter les échecs liés aux ressources

Pour obtenir plus d'informations sur les opérations de mise à niveau, ainsi que sur les possibilités et les causes de leurs échecs, vérifiez leurs objets. Pour répertorier les objets d'une opération de mise à niveau, exécutez la commande suivante :

gcloud container operations list \
    --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/PROJECT_ID/zones/COMPUTE_ZONE/clusters/CLUSTER_NAME"

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud
  • COMPUTE_ZONE : zone Compute Engine de votre cluster.
  • CLUSTER_NAME : nom du cluster

Si votre mise à niveau la plus récente a échoué en raison d'un quota de ressources insuffisant, le résultat ressemble à ceci :

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Insufficient quota to satisfy the request: waiting on IG: instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt errors: [QUOTA_EXCEEDED] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 50.0 in region us-central1.\
...

Si la raison est due à une réservation insuffisante, le résultat ressemble à ce qui suit :

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Reservation does not have enough resources for the request: waiting on IG:\
  \ instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt error: [CONDITION_NOT_MET] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Specified reservation 'foo' does not have available resources\
  \ for the request."

Si la raison est une capacité insuffisante, des messages d'erreur de disponibilité des ressources s'affichent.

Corriger les erreurs de mise à niveau

Si la mise à niveau échoue en raison de ressources insuffisantes, procédez comme suit :

  1. Envisagez une stratégie de mise à niveau moins gourmande en ressources. Si vous utilisez des mises à niveau bleu-vert, envisagez les mises à niveau de la surutilisation.
  2. Vérifiez si votre projet comporte des ressources Compute Engine qui consomment des ressources, mais ne sont plus nécessaires. Si c'est le cas, supprimez-les, puis relancez la mise à niveau.
  3. Si les deux premières étapes ne permettent pas de débloquer la mise à niveau, demandez une augmentation du quota ou augmentez la taille de la réservation concernée.
  4. Si vous travaillez dans un environnement à ressources limitées, par exemple avec des exigences spéciales pour le type de machine et des contraintes de capacité, consultez la section suivante pour connaître la procédure à suivre pour débloquer les mises à niveau.

Mettre à niveau dans un environnement à ressources limitées

Si Google Cloud a une capacité limitée pour une ressource spécifique (par exemple, des GPU ou des TPU) utilisée par votre pool de nœuds, nous vous recommandons d'utiliser une réservation pour vous assurer que vous disposez de ressources suffisantes. Si vous ne disposez pas de ressources adéquates, vous ne pourrez peut-être pas mettre à niveau vos nœuds tant que vous n'aurez pas accès à plus de capacité, si vous n'avez pas de réservation pour votre capacité existante.

Si vous ne pouvez pas obtenir de capacité supplémentaire, vous ne pouvez pas utiliser de mises à niveau bleu-vert. Pour les mises à niveau de surutilisation, maxSurge nécessite des nœuds supplémentaires. Avec maxUnavailable, si la capacité ne provient pas d'une réservation, GKE libère temporairement la capacité du nœud lors de sa mise à niveau, ce qui signifie que, en cas de capacité limitée, vous risquez de perdre la capacité.

Suivez les instructions ci-dessous, selon que vous avez ou non une réservation pour votre pool de nœuds à mettre à niveau.

Passer à une édition supérieure avec une capacité limitée sans réservation

Si vous n'avez pas de réservation pour les nœuds de votre pool de nœuds, nous vous recommandons de créer une réservation. Toutefois, si cela n'est pas possible, nous vous recommandons d'utiliser les mises à niveau de surutilisation avec la configuration par défaut de maxSurge=1;maxUnavailable=0. Avec cette configuration, vous ne risquez pas de perdre la capacité existante. Toutefois, les mises à niveau de surutilisation ne créent un nœud de surutilisation que si la capacité est disponible. Ainsi, si aucune capacité n'est disponible, les mises à niveau peuvent prendre plus de temps et votre pool de nœuds peut rester dans un état partiellement mis à niveau jusqu'à ce que la capacité soit sécurisée pour mettre à niveau chaque nœud.

Nous vous recommandons de créer une réservation ou d'augmenter la taille d'une réservation existante.

Passer à une édition supérieure avec une capacité limitée avec réservation

Si vous avez une réservation pour les nœuds de votre pool de nœuds, vous pouvez mettre à niveau vos pools de nœuds dans un environnement à capacité limitée en ajustant les paramètres de mise à niveau de la surutilisation pour améliorer la vitesse et la fiabilité.

Si vous disposez d'une capacité supplémentaire dans la réservation, vous pouvez utiliser maxSurge pour créer des nœuds de surutilisation. Définissez maxSurge en fonction du nombre de nœuds que vous souhaitez perturber simultanément et de la capacité supplémentaire dont vous disposez. Par exemple, définissez maxSurge=1;maxUnavailable=0 si vous ne souhaitez perturber qu'un seul nœud à la fois ou si vous ne pouvez créer qu'un seul nœud supplémentaire.

Si vous ne disposez pas de capacité supplémentaire, vous pouvez utiliser maxUnavailable avec une configuration telle que maxSurge=0;maxUnavailable=1, car la capacité est réservée. Cette configuration perturbe un nœud à la fois, en le recréant pour le mettre à jour.

Étapes suivantes