Ce document explique comment sélectionner des classes de calcul spécifiques afin d'exécuter des charges de travail ayant des exigences matérielles spécifiques dans vos clusters Google Kubernetes Engine (GKE) Autopilot. Avant de lire ce document, assurez-vous de connaître le concept de classe de calcul dans GKE Autopilot.
Présentation des classes de calcul Autopilot
Autopilot propose des classes de calcul conçues pour exécuter des charges de travail ayant des exigences matérielles spécifiques. Elles sont utiles pour des charges de travail telles que le machine learning et les tâches d'IA, ou pour l'exécution de bases de données à trafic élevé en temps réel.
Ces classes de calcul sont un sous-ensemble de la série de machines Compute Engine et offrent une flexibilité supérieure à la classe de calcul à usage général Autopilot par défaut.
Par exemple, la classe Scale-Out
désactive plusieurs threads simultanés de sorte que chaque processeur virtuel représente un cœur physique.
En fonction des besoins individuels de vos pods, vous pouvez configurer vos pods Autopilot standards ou vos pods Spot pour demander des nœuds sauvegardés par ces classes de calcul. Vous pouvez également demander une architecture de processeur spécifique, telle que Arm, dans les classes de calcul compatibles avec cette architecture.
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 GKE Autopilot exécutant GKE version 1.24.1-gke.1400 ou ultérieure.
Demander une classe de calcul dans votre pod Autopilot
Pour indiquer à Autopilot de placer vos pods sur une classe de calcul spécifique, spécifiez le libellécloud.google.com/compute-class
dans un nodeSelector ou une règle d'affinité de nœuds comme dans les exemples suivants :
nodeSelector
apiVersion: apps/v1 kind: Deployment metadata: name: hello-app spec: replicas: 3 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: nodeSelector: cloud.google.com/compute-class: "COMPUTE_CLASS" containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 resources: requests: cpu: "2000m" memory: "2Gi"
Remplacez COMPUTE_CLASS
par le nom de la classe de calcul en fonction de votre cas d'utilisation, par exemple Scale-Out
.
Si vous sélectionnez Accelerator
, vous devez également spécifier une GPU compatible. Pour en savoir plus, consultez la page Déployer des charges de travail GPU dans Autopilot. Si vous sélectionnez Performance
, vous devez également sélectionner une série de machines Compute Engine dans le sélecteur de nœud. Pour obtenir des instructions, consultez la page Exécuter des charges de travail intensives de processeur avec des performances optimales.
nodeAffinity
apiVersion: apps/v1 kind: Deployment metadata: name: hello-app spec: replicas: 3 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: terminationGracePeriodSeconds: 25 containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 resources: requests: cpu: "2000m" memory: "2Gi" ephemeral-storage: "1Gi" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cloud.google.com/compute-class operator: In values: - "COMPUTE_CLASS"
Remplacez COMPUTE_CLASS
par le nom de la classe de calcul en fonction de votre cas d'utilisation, par exemple Scale-Out
. Si vous sélectionnez Accelerator
, vous devez également spécifier une GPU compatible. Pour en savoir plus, consultez la page Déployer des charges de travail GPU dans Autopilot. Si vous sélectionnez Performance
, vous devez également sélectionner une série de machines Compute Engine dans le sélecteur de nœud. Pour obtenir des instructions, consultez la page Exécuter des charges de travail intensives de processeur avec des performances optimales.
Vous pouvez également demander des classes de calcul spécifiques pour vos pods Spot.
Spécifier les demandes de ressources
Lorsque vous choisissez une classe de calcul, veillez à spécifier les demandes de ressources pour vos pods en fonction des demandes de ressources minimales et maximales pour la classe que vous avez sélectionnée. Si le nombre de requêtes est inférieur au minimum, Autopilot effectue un scaling à la hausse automatiquement de vos requêtes. Toutefois, si vos requêtes dépassent le nombre maximum, Autopilot ne déploie pas vos pods et affiche un message d'erreur.
Choisir une architecture de processeur
Certaines classes de calcul sont compatibles avec plusieurs architectures de processeur. Par exemple, la classe Scale-Out
est compatible avec les architectures Arm et x86. Si vous ne demandez pas d'architecture spécifique, Autopilot provisionne les nœuds disposant de l'architecture par défaut de la classe de calcul spécifiée. Si vos pods doivent utiliser une architecture différente, demandez cette architecture dans votre sélecteur de nœud ou votre règle d'affinité de nœuds en même temps que votre requête de classe de calcul. La classe de calcul que vous demandez doit être compatible avec l'architecture de processeur que vous spécifiez.
Pour obtenir des instructions, consultez la page Déployer des pods Autopilot sur l'architecture Arm.
Étape suivante
- Obtenez plus d'informations sur l'architecture des clusters Autopilot.
- Apprenez-en plus sur le cycle de vie des pods.
- Découvrez les classes de calcul Autopilot disponibles.
- Découvrez les requêtes de ressources par défaut, minimales et maximales pour chaque plate-forme.