Choisir des classes de calcul pour les pods Autopilot


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.

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