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
- Signaler un hôte défectueux
Gérer la maintenance de l'hôte 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 et exclusions de maintenance GKE. Bien que la règle de maintenance de l'hôte de la plupart des instances de calcul soit 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 y sont exécutés. Si les pods sont déployés dans le cadre d'une charge de travail plus importante, comme un Job ou un Deployment, 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 libellés 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 vous a envoyé une notification concernant un événement de maintenance planifié, vous pouvez démarrer manuellement la maintenance à un moment qui correspond à votre emploi du temps. 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. Poursuivez également la lecture de cette section pour en savoir plus sur les points suivants :
- Configurer GKE pour qu'il arrête correctement vos charges de travail
- Processus de résiliation progressive
- 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 fournies par les libellés 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 à venir
Vous pouvez indiquer à GKE de ne planifier les pods que sur les nœuds qui n'ont pas d'événements de maintenance planifiés à venir, 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 pour lesquels une maintenance est prévue après une certaine date
Vous pouvez indiquer à GKE de ne planifier les pods que sur les nœuds pour lesquels une maintenance est prévue 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 perturbations des instances de calcul sous-jacentes et 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 causées par les mises à niveau des clusters, vous pouvez utiliser les outils suivants :
- Intervalles de maintenance : planifiez le moment 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 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 la version disponible 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.
Les canaux de publication vous donnent accès à davantage de fonctionnalités, y compris à des champ d'application d'exclusion de maintenance supplémentaires. Nous recommandons le champ d'application "Pas de mises à niveau mineures ni de nœuds" pour les charges de travail d'IA.
Signaler des hôtes défectueux via GKE
Cette section explique comment signaler un hôte défectueux sur lequel des instances de calcul sont provisionnées à l'aide du modèle de provisionnement lié à une réservation via GKE. Si vous souhaitez signaler un hôte défectueux pour un nœud provisionné à l'aide du modèle de provisionnement Démarrage flexible (Aperçu), contactez plutôt votre équipe chargée du compte.
Un hôte est un 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 des hôtes défectueux en appliquant un libellé 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 spécifique, 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.
- Attend que l'instance de calcul soit rétablie 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 rétablit l'instance de calcul sur le même nœud une fois l'opération de réparation terminée.
- Supprime le rejet et le libellé
fault-behaviordu nœud.
Le nœud sera alors à nouveau prêt à traiter les 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 1.32.3-gke.1057001 ou ultérieure de GKE.
- 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 dans 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'é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 toute la capacité.
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
NODE_NAME.Signalez le nœud comme défectueux :
kubectl label nodes NODE_NAME cloud.google.com/fault-behavior=FAULT_REASONRemplacez les éléments suivants :
NODE_NAME: nom du nœud défectueux.FAULT_REASON: motif de l'erreur approprié, à l'aide d'une ou de 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, si aucune erreur XID n'est détectée dans les journaux et si aucun des autres schémas d'échec habituels, comme la corruption silencieuse des données, n'est détecté.SDC: utilisez cette valeur en cas de corruption silencieuse des données, si vous constatez une corruption des données, mais pas de plantage du système. Cette corruption de 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 mémoire, des problèmes de noyau ou d'autres défauts. Le plus souvent, ce terme fait référence à des 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.
reservationOperationalMode dans la réservation.
Le tableau suivant récapitule le processus d'hôte défectueux pour les deux modes opérationnels de réservation disponibles : mode "Toute la capacité" et 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 |
| Limitation du débit de l'API de signalement d'hôtes défectueux | Aucune limite de débit ne s'applique. | Les appels à l'API peuvent être soumis à une limite de fréquence. |
| 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 "Toutes capacités", les événements suivants se produisent :
|
Lorsque vous signalez un hôte défectueux pour un nœud qui s'exécute en mode géré, les événements suivants se produisent :
|
Surveiller la progression de l'opération
Vous pouvez surveiller la progression de l'opération GKE à l'aide du libellé de nœud cloud.google.com/report-and-replace-status sur votre nœud GKE, qui présente l'une des valeurs suivantes :
PodsEvicted: GKE a terminé d'évincer les 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.Error: l'appel d'API a échoué, pour des raisons incluant l'une des exigences décrites dans la section précédente.
Vous pouvez également afficher le libellé du nœud cloud.google.com/report-and-replace-operation pour consulter l'ID d'opération Compute Engine et surveiller l'état de l'opération.
Vous pouvez afficher ces deux libellés de nœud à l'aide de la commande suivante :
kubectl get nodes NODE_NAME \
-L cloud.google.com/report-and-replace-status,cloud.google.com/report-and-replace-operation
En cas d'erreur d'API, GKE définit le libellé de nœud cloud.google.com/report-and-replace-status=ERROR. GKE efface les rejets de nœud et supprime le libellé de nœud cloud.google.com/fault-behavior.
Pour savoir comment suivre l'état détaillé d'une opération de signalement d'un hôte défectueux, consultez Examiner les opérations de signalement d'un hôte défectueux.
Pour réessayer l'opération en cas d'erreurs temporaires telles que des limites de débit, réappliquez le libellé cloud.google.com/fault-behavior au nœud.
Étapes suivantes
Découvrez comment planifier des charges de travail GKE avec la planification sensible à la topologie.
Découvrez comment optimiser la mise en réseau des clusters à l'aide de NCCL/gIB.
Découvrez comment résoudre les problèmes liés aux erreurs d'API hôte défectueuses.