Cette page vous explique comment gérer les clusters Google Kubernetes Engine (GKE) optimisés pour l'IA des machines A4X Max, A4X, A4, A3 Ultra, A3 Mega et A3 High (8 GPU), y compris les événements courants suivants concernant les clusters GKE et les charges de travail d'IA :
- Maintenance de l'hôte
- Mise à niveau des clusters
- Signalement d'un hôte défectueux
Gérer la maintenance des hôtes pour les charges de travail d'IA
Les nœuds GKE s'exécutent sur des instances Compute Engine qui subissent régulièrement des événements hôtes pouvant perturber les charges de travail d'IA. Étant donné que les événements d'hôte se produisent sur l'infrastructureGoogle Cloud sous-jacente, ils contournent les intervalles de maintenance et exclusions de GKE. Bien que la plupart des instances de calcul aient leur règle de maintenance de l'hôte définie sur migration à chaud, ce qui minimise l'interruption des charges de travail, les GPU et les TPU ne sont pas compatibles avec la migration à chaud. Lorsque ces événements d'hôte affectent vos nœuds GKE exécutant des charges de travail d'IA, GKE doit arrêter le nœud et les pods qui s'y exécutent. Si les pods sont déployés dans le cadre d'une charge de travail plus importante, telle qu'un job ou un déploiement, GKE tente de redémarrer les pods sur le nœud concerné.
Pour en savoir plus sur la gestion de la maintenance des hôtes des instances de calcul sous-jacentes, consultez Gérer les interruptions des nœuds GKE pour les GPU et les TPU.
Surveiller les événements de maintenance de l'hôte
Pour les clusters exécutant GKE version 1.31.1-gke.2008000 ou ultérieure, vous pouvez afficher l'heure de début planifiée de l'événement de maintenance de l'hôte de la manière suivante. L'heure de début est représentée par des étiquettes de nœud Kubernetes sur le nœud GKE correspondant pour tous les GPU et TPU.
Pour en savoir plus, consultez Surveiller les notifications de maintenance.
Ces libellés de nœud vous permettent d'effectuer les opérations suivantes :
- Démarrer manuellement un événement de maintenance de l'hôte
- Utiliser les informations sur les événements de maintenance de l'hôte lors de la planification de vos charges de travail
Démarrer manuellement un événement de maintenance de l'hôte
Une fois que Compute Engine a émis une notification concernant un événement de maintenance planifié, vous pouvez démarrer manuellement la maintenance à un moment qui correspond à votre planning. Par exemple, vous pouvez choisir d'effectuer la maintenance pendant les périodes d'activité réduite.
Si vous ne démarrez pas manuellement un événement de maintenance de l'hôte, Compute Engine effectuera automatiquement la maintenance planifiée régulièrement.
Suivez les instructions pour démarrer manuellement un événement de maintenance de l'hôte. Continuez également à lire cette section pour en savoir plus sur les points suivants :
- Configurer GKE pour qu'il arrête correctement vos charges de travail
- Processus d'arrêt progressif
- Surveiller la progression d'un arrêt progressif actif
Utiliser les informations de maintenance de l'hôte lors de la planification de vos charges de travail
Vous pouvez utiliser les informations de maintenance affichées via les étiquettes de nœud GKE, ainsi que l'affinité et l'anti-affinité de nœud, pour minimiser les perturbations de vos charges de travail.
Consultez les sections suivantes pour obtenir des exemples d'utilisation de ces informations.
Planifier des pods sur des nœuds qui n'ont pas d'événements de maintenance planifiés à l'avenir
Vous pouvez indiquer à GKE de ne planifier des pods que sur des nœuds qui n'ont pas d'événements de maintenance planifiés à l'avenir, comme dans l'extrait suivant :
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/scheduled-maintenance-time
operator: DoesNotExist
Planifier des pods sur des nœuds dont la maintenance est programmée après une certaine date
Vous pouvez indiquer à GKE de ne planifier des pods que sur les nœuds dont la maintenance est planifiée après une certaine date en fournissant l'heure d'epoch Unix :
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/scheduled-maintenance-time
operator: Gt
values:
- 1733296000
Gérer les mises à niveau des clusters GKE pour les charges de travail d'IA
Les charges de travail d'IA sont sensibles aux interruptions.
Au cours du cycle de vie d'un cluster GKE, les charges de travail d'IA doivent être préparées aux interruptions des instances de calcul sous-jacentes, ainsi que du cluster GKE lui-même :
- Maintenance de l'hôte : pour gérer la maintenance de l'hôte des instances de calcul sous-jacentes, consultez Gérer les interruptions des nœuds GKE pour les GPU et les TPU. Cela est également décrit dans les sections précédentes.
- Mises à niveau des clusters : pour gérer les perturbations liées aux mises à niveau des clusters, vous pouvez utiliser les outils suivants :
- Intervalles de maintenance : planifiez les moments où GKE peut effectuer des mises à niveau de cluster et d'autres types d'opérations de cluster.
- Exclusions de maintenance : empêchez les mises à niveau de cluster et d'autres types d'opérations de cluster pendant une période spécifique.
Nous vous recommandons de laisser votre cluster enregistré dans un version disponible. Par défaut, les clusters GKE sont enregistrés dans le canal de publication standard. Pour en savoir plus sur les avantages des canaux de publication, consultez la comparaison entre les clusters enregistrés et non enregistrés dans un canal de publication.
Avec les canaux de publication, vous avez accès à davantage de fonctionnalités, y compris des champs d'application d'exclusion de maintenance supplémentaires. Nous recommandons le champ d'application "Aucune mise à niveau mineure ni de mise à niveau des nœuds" pour les charges de travail d'IA.
Signaler des hôtes défectueux via GKE
Cette section explique comment, via GKE, vous pouvez signaler un hôte défectueux sur lequel des instances de calcul sont provisionnées à l'aide du modèle de provisionnement standard, de démarrage flexible ou lié à une réservation. Si vous souhaitez signaler un hôte défectueux pour un nœud provisionné à l'aide du modèle de provisionnement Spot ou qui utilise des GPU généraux, contactez plutôt l'équipe chargée de votre compte.
Si vous observez des erreurs de mémoire GPU ou Xid sur un nœud et que vous souhaitez vérifier si des mesures de récupération manuelles, telles que le déclenchement d'un redémarrage de l'OS invité (kubectl label
nodes <NODE_NAME> cloud.google.com/perform-reboot=true), peuvent résoudre le problème avant de signaler l'hôte comme défectueux, consultez Examiner les messages Xid.
Un hôte est une machine de serveur physique unique dans le centre de données qui exécute une instance de calcul hébergeant votre nœud GKE. Vous pouvez signaler les hôtes défectueux en appliquant une étiquette de nœud fault-behavior au nœud GKE concerné. Une fois que vous avez appliqué l'étiquette de nœud à un nœud GKE particulier, GKE effectue les étapes suivantes :
- Supprime de manière optimale les charges de travail du nœud.
- Empêche de programmer de nouveaux pods sur le nœud.
- Appelle l'API sur l'instance de calcul pour marquer l'hôte comme défectueux.
- Attendre que l'instance de calcul soit remise en service sur une machine hôte opérationnelle. Pour les réservations qui utilisent le mode opérationnel de réservation toute la capacité, Compute Engine restaure l'instance de calcul sur le même nœud une fois l'opération de réparation terminée.
- Supprime le rejet et l'étiquette
fault-behaviordu nœud.
Le nœud sera alors de nouveau prêt à diffuser des charges de travail.
Conditions requises
Pour signaler un hôte défectueux, votre nœud GKE doit répondre aux exigences suivantes :
- Vous devez exécuter la version de correctif GKE 1.32.3-gke.1057001 ou une version ultérieure.
- Vous devez exécuter l'un des types de machines GPU suivants : A4X Max, A4X, A4, A3 Ultra, A3 Mega et A3 High (8 GPU).
- Vous devez exécuter vos nœuds GKE sur une instance de calcul liée à une réservation.
- Votre nœud GKE doit être à l'état
RUNNING. Si vous essayez de signaler un hôte défectueux après avoir supprimé l'instance de calcul, un message d'erreur s'affiche et la machine hôte n'est pas marquée comme défectueuse. - Le nombre d'appels à cette API par réservation et par mois peut être limité en fonction de l'évaluation de l'état de vos blocs. Les limites de débit ne s'appliquent pas si votre réservation utilise le mode opérationnel de réservation de capacité totale.
Signaler un hôte défectueux
Pour signaler un hôte défectueux :
Utilisez les outils d'observabilité GKE, vos propres outils de surveillance ou les journaux pour identifier les nœuds GKE qui rencontrent des problèmes de performances. Enregistrez le fichier
NODE_NAME.Signalez le nœud comme défectueux à l'aide de la commande suivante. Vous pouvez fournir un motif et, avec les versions ultérieures, une description :
kubectl patch node NODE_NAME --type merge -p '{ "metadata": { "labels": { "cloud.google.com/fault-behavior": "FAULT_REASON" }, "annotations": { "cloud.google.com/fault-description": "FAULT_DESCRIPTION" } } }'Modifiez la commande comme suit :
- Remplacez
NODE_NAMEpar le nom du nœud défectueux. - Remplacez
FAULT_REASONpar le motif d'erreur approprié en utilisant une ou plusieurs des valeurs suivantes :PERFORMANCE: utilisez cette valeur si les GPU d'une instance de calcul sont plus lents que les autres GPU du cluster et que vous ne voyez aucune erreur XID dans les journaux, et qu'aucun autre schéma d'échec habituel, tel qu'une corruption de données silencieuse, n'est détecté.SDC: utilisez cette valeur pour la corruption de données silencieuse, si vous constatez une corruption de données, mais pas de plantage du système. Cette corruption des données peut être causée par des défauts du processeur, des bugs logiciels tels que l'utilisation après libération ou l'écrasement de la mémoire, des problèmes de noyau ou d'autres défauts. Le plus souvent, ce terme est utilisé pour désigner les défauts induits par le matériel.XID: utilisez cette valeur si vous avez identifié une erreur de GPU irrécupérable avec un XID pour une instance de calcul.unspecified: utilisez cette valeur si vous ne savez pas quel comportement est à l'origine du problème avec votre instance de calcul. Il s'agit de la valeur par défaut. Toutefois, nous vous recommandons de spécifier l'une des autres valeurs, le cas échéant.
- Ajustez le bloc
annotationsen fonction de la version du plan de contrôle de votre cluster GKE :- 1.35.6-gke.1017000 ou version ultérieure, ou 1.36.0-gke.3251000 ou version ultérieure : conservez le bloc d'annotations et remplacez
FAULT_DESCRIPTIONpar une description textuelle de l'erreur observée. Il peut s'agir du code d'erreur XID, des symptômes ou des codes temporels. Cette description est transmise à Compute Engine pour faciliter le diagnostic de réparation. Elle est automatiquement supprimée du nœud une fois l'opération terminée. Par exemple :GPU XID 48 observed on device nvidia0 at 2026-06-10T10:30:00Z. - Versions antérieures : supprimez l'intégralité du bloc
annotationsde la commande. Le champfault-descriptionn'est pas transmis à Compute Engine dans ces versions et n'est pas automatiquement supprimé du nœud. Contactez plutôt l'équipe chargée de votre compte ou Cloud Customer Care pour fournir des détails sur l'erreur.
- 1.35.6-gke.1017000 ou version ultérieure, ou 1.36.0-gke.3251000 ou version ultérieure : conservez le bloc d'annotations et remplacez
- Remplacez
reservationOperationalMode dans la réservation.
Le tableau suivant récapitule le processus d'hôte défaillant pour les deux modes opérationnels de réservation disponibles : le mode de capacité totale et le mode géré.
Mode Toute la capacité (ALL_CAPACITY) |
Mode géré (HIGHLY_AVAILABLE_CAPACITY) |
|
|---|---|---|
| Types de machines compatibles | A4X Max et A4X | A4, A3 Ultra, A3 Mega et A3 High (8 GPU) |
| Limitation du débit de l'API de signalement d'hôte défectueux | Aucune limite de débit ne s'applique. | Le débit des appels d'API peut être limité. |
| Processus de signalement d'un hôte défectueux |
Lorsque vous signalez un hôte défectueux pour un nœud qui s'exécute en mode de capacité totale, voici ce qui se produit :
|
Lorsque vous signalez un hôte défectueux pour un nœud qui s'exécute en mode géré, voici ce qui se produit :
|
Surveiller la progression de l'opération
Vous pouvez surveiller la progression de l'opération de GKE à l'aide de l'étiquette de nœud cloud.google.com/report-and-replace-status sur votre nœud GKE, qui possède l'une des valeurs suivantes :
PodsEvicted: GKE a terminé l'éviction des pods du nœud concerné.OperationRUNNING: l'opération de signalement de l'hôte défectueux est en cours d'exécution.OperationDONE: l'hôte sous-jacent a été signalé comme défectueux et le nœud GKE est prêt à être déplacé vers un nouvel hôte.OperationFAILED: l'API sur l'instance de calcul a échoué en raison de limites de quota ou d'autres problèmes d'infrastructure. Pour comprendre l'erreur, consultez Résoudre les erreurs de l'API de signalement d'hôte défectueux. Pour savoir comment récupérer, consultez Gérer les échecs de signalement et de remplacement.Error: l'appel d'API a échoué, car la requête ne répondait pas à l'une des exigences décrites dans la section précédente.
Vous pouvez également afficher l'étiquette de nœud node.gke.io/report-and-replace-operation pour afficher l'ID d'opération Compute Engine afin de surveiller l'état de l'opération.
Vous pouvez afficher ces deux étiquettes de nœud à l'aide de la commande suivante :
kubectl get nodes NODE_NAME \
-L cloud.google.com/report-and-replace-status,node.gke.io/report-and-replace-operation
Si une erreur d'API se produit, GKE définit l'étiquette de nœud cloud.google.com/report-and-replace-status sur Error. En cas d'échec de l'opération, GKE définit l'étiquette sur OperationFAILED.
Dans les deux cas, GKE supprime l'étiquette de nœud cloud.google.com/fault-behavior. De plus, dans GKE version 1.35.6-gke.1256000 ou ultérieure, ou 1.36.0-gke.4060000 ou ultérieure, GKE applique un rejet cloud.google.com/report-and-replace-failed:NoSchedule au nœud. Ce rejet empêche la planification de nouveaux pods sur le nœud, ce qui garantit que les charges de travail ne sont pas placées sur un nœud dont l'hôte est potentiellement défectueux. Pour en savoir plus, consultez Gérer les échecs de signalement et de remplacement.
Pour savoir comment suivre l'état détaillé d'une opération de signalement d'hôte défectueux, consultez Examiner les opérations de signalement d'hôte défectueux.
Gérer les échecs de signalement et de remplacement
Lorsqu'une opération de signalement et de remplacement échoue, GKE applique le rejet cloud.google.com/report-and-replace-failed:NoSchedule au nœud concerné. Ce rejet permet de maintenir le nœud marqué comme non ordonnançable afin qu'aucune nouvelle charge de travail ne soit planifiée sur celui-ci, car l'hôte sous-jacent peut toujours être défaillant.
Rechercher le rejet d'échec
Pour vérifier si un nœud présente le rejet d'échec de signalement et de remplacement, exécutez la commande suivante :
kubectl describe node NODE_NAME | grep "report-and-replace-failed"
Récupération après un échec de signalement et de remplacement
Pour récupérer un échec de signalement et de remplacement, effectuez l'une des opérations suivantes :
Réessayez l'opération en appliquant à nouveau l'étiquette
cloud.google.com/fault-behaviorau nœud. Si la nouvelle tentative réussit, GKE supprime automatiquement le rejetcloud.google.com/report-and-replace-failed:NoSchedule:kubectl label node NODE_NAME cloud.google.com/fault-behavior=FAULT_REASONSupprimez manuellement le rejet si vous avez déterminé que le nœud est opérationnel ou si vous souhaitez le remettre en service :
kubectl taint nodes NODE_NAME cloud.google.com/report-and-replace-failed:NoSchedule-
Étapes suivantes
Apprenez à planifier des charges de travail GKE avec l'ordonnancement basé sur la topologie.
Découvrez comment optimiser la mise en réseau du cluster à l'aide de NCCL/gIB.
Découvrez comment résoudre les erreurs d'API liées au signalement d'un hôte défectueux.