Cette page explique comment placer des charges de travail sur des séries de machines Compute Engine spécifiques pour optimiser les performances de vos charges de travail dans vos clusters Google Kubernetes Engine (GKE) Autopilot.
Assurez-vous de connaître les points suivants :
- Série de machines Compute Engine et cas d'utilisation
- Exigences au niveau du noyau pour vos applications
Fonctionnement de la sélection de la série de machines
Vous pouvez ajouter un sélecteur de nœud cloud.google.com/machine-family
à la spécification de votre pod pour qu'Autopilot alloue du matériel Compute Engine spécifique à ce pod. Par exemple, vous pouvez choisir la série de machines C3 pour les pods qui ont besoin de plus de puissance de processeur, ou la série de machines N1 pour les pods qui ont besoin de plus de mémoire. Autopilot provisionne l'un des types de machines prédéfinis de la série de machines sélectionnée pour exécuter votre charge de travail de manière optimale.
En plus d'optimiser les performances des pods, le choix d'une série de machines spécifique offre les avantages suivants :
Utilisation efficace des nœuds : par défaut, Autopilot optimise l'utilisation des ressources de nœud en programmant autant de pods que possible qui demandent la même série de machines sur chaque nœud. Cette approche optimise l'utilisation des ressources sur le nœud, ce qui améliore le rapport prix/performances. Si votre charge de travail doit accéder à toutes les ressources du nœud, vous pouvez éventuellement configurer votre charge de travail pour qu'elle demande un pod pour chaque nœud.
Charges de travail extensibles : vous pouvez configurer des pods pour qu'ils exploitent la capacité de ressources inutilisée sur le nœud en définissant des limites de ressources supérieures à vos demandes. Pour en savoir plus, consultez la page Configurer l'utilisation intensive des pods dans GKE.
Demander un nœud dédié pour chaque pod
Si vous avez des charges de travail gourmandes en processeur qui nécessitent un accès fiable à toutes les ressources du nœud, vous pouvez configurer votre pod pour qu'Autopilot place un pod qui demande une série de machines sur son propre nœud.
Les nœuds dédiés par pod sont recommandés lorsque vous exécutez des charges de travail à grande échelle et gourmandes en ressources de processeur, telles que des charges de travail d'entraînement de l'IA/ML ou des charges de travail de calcul hautes performances (HPC) par lot.
Choisir entre la planification de plusieurs pods et la planification d'un seul pod
Suivez les conseils ci-dessous pour choisir un comportement de planification des pods en fonction de vos besoins :
- Si vos pods peuvent partager des ressources de calcul avec d'autres pods ou si vous souhaitez optimiser les coûts tout en exécutant des pods sur du matériel spécialisé, utilisez le comportement de planification par défaut de plusieurs pods par nœud.
- Si vos pods ont besoin d'un accès fiable aux ressources de nœud complet ou si vous souhaitez réduire les risques d'interruption causés par le partage de ressources de calcul, demandez un nœud dédié pour chaque pod.
Tarifs
La VM sous-jacente et tout le matériel associé vous sont facturés par Compute Engine, avec un supplément pour la gestion et l'évolutivité des nœuds Autopilot. Pour en savoir plus, consultez la page Tarifs de GKE.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
- Assurez-vous de disposer d'un cluster Autopilot existant exécutant la version 1.30.1-gke.1396000 ou ultérieure. Pour créer un cluster, consultez la page Créer un cluster Autopilot.
Sélectionner une série de machines
Cette section explique comment sélectionner une série de machines Compute Engine spécifique dans un pod.
Enregistrez le manifeste suivant sous le nom
machine-series-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 5 memory: "25Gi" limits: cpu: 20 memory: 100Gi
Remplacez
MACHINE_SERIES
par la série de machines Compute Engine pour votre pod, par exemplec3
. Pour connaître les valeurs acceptées, consultez la section Série de machines compatible dans cette page.Déployez le pod :
kubectl apply -f machine-series-pod.yaml
Ce fichier manifeste permet à Autopilot d'optimiser l'utilisation des ressources du nœud en planifiant efficacement d'autres pods qui sélectionnent la même série de machines sur le même nœud si la capacité est disponible.
Utiliser des disques SSD locaux
Les pods qui sélectionnent une série de machines peuvent utiliser des SSD locaux pour le stockage éphémère si vous spécifiez une série de machines qui propose des SSD locaux. Autopilot prend en compte les demandes de stockage éphémères lors du choix d'un type de machine Compute Engine pour le pod.
Enregistrez le manifeste suivant sous le nom
local-ssd-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: local-ssd-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/gke-ephemeral-storage-local-ssd: "true" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 6 memory: "25Gi" ephemeral: "100Gi" limits: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Remplacez
MACHINE_SERIES
par une série de machines compatible qui accepte également les disques SSD locaux. Si la série de machines spécifiée n'est pas compatible avec les disques SSD locaux, le déploiement échoue avec une erreur.Déployez le pod :
kubectl apply -f local-ssd-pod.yaml
Demander un nœud dédié pour un pod
Si votre pod présente des exigences de performances spécifiques, comme un accès fiable à toutes les ressources de votre nœud, vous pouvez demander un nœud dédié pour chaque pod en spécifiant le sélecteur de nœuds cloud.google.com/compute-class: Performance
avec le sélecteur de nœuds de votre série de machines. Cela indique à Autopilot de placer votre pod sur un nouveau nœud qui utilise la série de machines spécifiée et qui est dédié à ce pod.
Ce sélecteur de nœud empêche également Autopilot de planifier d'autres pods sur ce nœud.
Enregistrez le manifeste suivant sous le nom
dedicated-node-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: dedicated-node-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/compute-class: Performance containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Remplacez
MACHINE_SERIES
par une série de machines compatible qui accepte également la planification d'un Pod par nœud. Si la série de machines spécifiée n'est pas compatible avec la planification d'un pod par nœud, le déploiement échoue et une erreur s'affiche.Déployez le pod :
kubectl apply -f dedicated-node-pod.yaml
Lorsque vous déployez ce fichier manifeste, Autopilot effectue les opérations suivantes :
- Garantit que le pod déployé demande au moins les ressources minimales pour le nœud optimisé pour les performances.
- Calcule le nombre total de demandes de ressources pour le pod déployé et les DaemonSets du cluster.
- Provisionne un nœud sauvegardé par la série de machines sélectionnée.
- Modifie le fichier manifeste du pod avec une combinaison de sélecteurs de nœuds et de tolérances pour garantir que le pod s'exécute sur son propre nœud.
Série de machines compatible
Le sélecteur machine-family
est compatible avec les séries de machines suivantes :
(toujours groupé) |
Pour comparer ces séries de machines et leurs cas d'utilisation, consultez la section Comparaison des séries de machines dans la documentation Compute Engine.
Compatibilité avec d'autres fonctionnalités de GKE
Vous pouvez utiliser des pods qui sélectionnent des séries de machines avec les fonctionnalités et capacités GKE suivantes :
- Pods Spot
- Pods d'exécution étendus (uniquement avec des nœuds dédiés par pod)
- Séparation de la charge de travail
- Réservations de capacité
- Remises sur engagement d'utilisation
Les pods Spot et les pods avec une durée d'exécution étendue s'excluent mutuellement. GKE n'applique pas de demandes de ressources minimales plus élevées pour les pods dédiés par nœud, même s'ils utilisent la séparation des charges de travail.
Comment GKE sélectionne un type de machine
Pour sélectionner un type de machine dans la série de machines spécifiée, GKE calcule le total des demandes de processeur, de mémoire et de stockage éphémère des pods et des DaemonSets qui seront exécutés sur le nouveau nœud. GKE arrondit ces valeurs au type de machine Compute Engine disponible le plus proche compatible avec tous ces totaux.
Exemple 1 : Prenons l'exemple d'un déploiement avec quatre instances répliquées qui sélectionne la série de machines C3D. Vous ne demandez pas de nœuds dédiés par pod. Les requêtes de ressources de chaque instance répliquée sont les suivantes :
- 500m vCPU
- 1 Gio de mémoire
Autopilot place tous les pods sur un nœud sauvegardé par le type de machine
c3d-standard-4
, qui dispose de 4 vCPU et de 16 Go de mémoire.Exemple 2 : Prenons l'exemple d'un pod qui sélectionne la série de machines
C3D
et les disques SSD locaux pour le stockage éphémère. Vous demandez un nœud dédié pour le pod. Le nombre total de demandes de ressources, en incluant les objets DaemonSet, est le suivant :- 12 vCPU
- 50 Gio de mémoire
- 200 Gio d'espace de stockage éphémère
GKE place le pod sur un nœud qui utilise le type de machine
c3d-standard-16-lssd
, qui dispose de 16 vCPU, 64 Gio de mémoire et 365 Gio de capacité SSD locale.
Étape suivante
- Pour obtenir des conseils sur les options de calcul qu'Autopilot propose pour différents cas d'utilisation, consultez la section Classes de calcul dans Autopilot.
- Déployez des charges de travail basées sur GPU dans Autopilot.