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


Cette page explique comment vérifier que vous pouvez utiliser les stratégies de mise à niveau des nœuds pour apporter des modifications aux nœuds de votre cluster. Nous vous recommandons de vérifier si votre projet dispose de suffisamment de ressources 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 nécessitant moins de ressources pour vous assurer de pouvoir mettre à niveau vos nœuds ou effectuer d'autres actions telles que la création d'une réservation. Pour en savoir plus, consultez la page 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 la 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 une mise à niveau dans un environnement à ressources limitées.

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 d'essayer automatiquement la mise à niveau 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 due à une capacité insuffisante, des messages d'erreur concernant la disponibilité des ressources s'affichent.

Corriger les erreurs de mise à niveau

Si votre 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 peuvent pas débloquer votre mise à niveau, demandez une augmentation de quota ou augmentez la taille de la réservation spécifique.
  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 suffisantes, vous ne pourrez peut-être pas mettre à niveau vos nœuds tant que vous n'aurez pas accès à davantage 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 la 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 ce n'est pas possible, nous vous recommandons d'utiliser les mises à niveau de la surutilisation avec la configuration par défaut définie sur maxSurge=1;maxUnavailable=0. Avec cette configuration, vous ne risquez pas de perdre de la capacité existante. Toutefois, les mises à niveau de la 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 une 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 interrompre 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 nœud à la fois, ou si vous n'avez la capacité que pour créer un 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 interrompt un nœud à la fois, en le recréant pour le mettre à jour.

Étapes suivantes