Exécuter des charges de travail en mode Autopilot dans des clusters Standard

Les administrateurs de cluster et les opérateurs d'application peuvent bénéficier des avantages de Google Kubernetes Engine (GKE) Autopilot, tels que la tarification et les paramètres préconfigurés, dans les clusters en mode Standard. Ce document explique comment utiliser les ComputeClasses pour déployer une charge de travail Autopilot dans un cluster Standard. Vous devez déjà connaître les concepts suivants :

À propos des ComputeClasses Autopilot

GKE fournit des ressources personnalisées Kubernetes nommées ComputeClasses qui peuvent être déployées dans votre cluster comme n'importe quelle autre ressource Kubernetes. Une ComputeClass définit une liste de configurations de nœuds, telles que des types de machines ou des VM Spot. Vous pouvez sélectionner des ComputeClasses dans vos charges de travail, ce qui indique à GKE que tous les nouveaux nœuds doivent utiliser l'une des configurations de cette liste.

Si une charge de travail sélectionne une ComputeClass pour laquelle le champ autopilot est activé, GKE exécute les pods en mode Autopilot. Les nœuds créés par GKE sont gérés par Google et incluent de nombreux paramètres de sécurité et de fonctionnalités Autopilot par défaut. Pour en savoir plus sur les implications de l'exécution d'une charge de travail Autopilot dans vos clusters Standard, y compris les différences que vous pouvez remarquer lorsque vous déployez ces charges de travail, consultez À propos des charges de travail en mode Autopilot dans GKE Standard.

Types de ComputeClasses Autopilot

GKE fournit des ComputeClasses Autopilot intégrées que vous pouvez utiliser pour la plupart des charges de travail à usage général. Vous pouvez également configurer une ComputeClass personnalisée nouvelle ou existante pour utiliser le mode Autopilot. Le type de ComputeClass Autopilot que vous utilisez dépend du fait que vos charges de travail nécessitent ou non du matériel spécifique, comme suit :

  • Charges de travail à usage général : utilisez l'une des ComputeClasses Autopilot intégrées, qui placent les pods sur la plate-forme de calcul optimisée pour les conteneurs.
  • Charges de travail nécessitant du matériel spécifique : activez le mode Autopilot pour n'importe quelle ComputeClass personnalisée, déployez cette ComputeClass sur le cluster et sélectionnez-la dans vos charges de travail.

Pour en savoir plus sur ces options, quand les utiliser et sur leur tarification pour chaque option, consultez Sélection de matériel dans les ComputeClasses Autopilot.

Tarifs

La tarification de GKE Autopilot s'applique aux charges de travail et aux nœuds qui utilisent une ComputeClass Autopilot. Le modèle de tarification qui s'applique dépend de la règle de priorité ComputeClass que GKE utilise pour créer des nœuds pour vos charges de travail. Pour en savoir plus, consultez Tarifs dans "À propos des charges de travail en mode Autopilot dans GKE Standard".

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 la Google Cloud CLI pour cette tâche, installez et initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.

Conditions requises

  • Votre cluster doit exécuter l'une des versions GKE suivantes :

    • Pour utiliser Autopilot dans les ComputeClasses, le cluster doit exécuter la version 1.34.1-gke.1829001 ou une version ultérieure.
    • Pour utiliser les règles de priorité podFamily dans les ComputeClasses Autopilot personnalisées, le cluster doit exécuter la version 1.35.2-gke.1485000 ou une version ultérieure.
  • Au moins un pool de nœuds du cluster ne doit pas comporter de rejets de nœuds.

    Ce pool de nœuds est nécessaire pour exécuter les pods système GKE Standard qui ne peuvent pas s'exécuter sur des nœuds Autopilot dans des clusters Standard en raison des rejets que GKE ajoute à ces nœuds.

  • Les nœuds GKE protégés sont obligatoires et activés par défaut.

  • Vous devez utiliser un cluster de VPC natif.

  • Si vous utilisez des règles de réseau Kubernetes, votre cluster doit utiliser GKE Dataplane V2. Par défaut, tous les nouveaux clusters utilisent GKE Dataplane V2.

    Si votre cluster n'utilise pas GKE Dataplane V2, vous devez désactiver l'application des règles de réseau.

Limites

  • Pour mettre à jour les ComputeClasses existantes dans le cluster afin d'utiliser le mode Autopilot, vous devez recréer ces ComputeClasses avec une spécification mise à jour. Pour en savoir plus, consultez Activer Autopilot pour une ComputeClass personnalisée existante.
  • Les ComputeClasses Autopilot intégrées ne permettent pas d'activer les nœuds GKE confidentiels pour l'ensemble de votre cluster. Si vous activez les nœuds GKE confidentiels pour le cluster, tous les nouveaux pods qui sélectionnent les ComputeClasses Autopilot intégrées restent indéfiniment à l'état Pending.
  • L'application des règles de réseau Calico n'est pas compatible. Vous devez utiliser GKE Dataplane V2 ou désactiver l'application des règles de réseau.
  • Le nom de votre ComputeClass ne peut pas commencer par gke ni autopilot, qui sont des préfixes réservés.

Rôles et autorisations requis

Pour obtenir les autorisations nécessaires pour déployer des ComputeClasses, demandez à votre administrateur de vous attribuer le rôle IAM Développeur Kubernetes Engine (roles/container.developer) sur votre cluster ou votre projet . Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Modifier les clusters pour répondre aux exigences d'Autopilot

Vous pouvez utiliser la Google Cloud console pour vérifier si votre cluster Standard répond à toutes les exigences pour exécuter des charges de travail en mode Autopilot. Vous pouvez également utiliser la Google Cloud console pour modifier le cluster afin de répondre à ces exigences.

Modifier un cluster existant

  1. Dans la Google Cloud console, accédez à la page Clusters Kubernetes.

    Accéder à la page "Clusters Kubernetes"

  2. Sur la ligne du cluster que vous souhaitez modifier, cliquez sur Autres actions > Modifier. La page Détails du cluster s'ouvre.

  3. Dans la section Paramètres de base du cluster, recherchez la section Compatibilité avec la classe de calcul Autopilot.

    Si cette section affiche Activé, le cluster est déjà compatible avec Autopilot. Passez à la section Sélectionner une ComputeClass Autopilot dans une charge de travail.

  4. Si la section Compatibilité avec la classe de calcul Autopilot affiche Désactivé, cliquez sur Modifier la compatibilité avec la classe de calcul Autopilot.

    Si cette section n'est pas modifiable, votre cluster utilise un paramètre permanent incompatible avec le mode Autopilot. Par exemple, vous ne pouvez pas modifier les clusters pour qu'ils soient natifs du VPC après leur création. Si vous ne pouvez pas interagir avec la section Compatibilité avec la classe de calcul Autopilot, vous devez créer un cluster.

  5. Dans le volet Compatibilité avec la classe de calcul Autopilot qui s'ouvre, examinez les paramètres de cluster qui doivent être modifiés pour répondre aux exigences du mode Autopilot.

  6. Cliquez sur Activer la classe de calcul Autopilot. GKE modifie le cluster si nécessaire.

Modifier un cluster

  1. Dans la Google Cloud console, accédez à la page **Créer un cluster Kubernetes**.

    Accéder à la page "Créer un cluster Kubernetes"

  2. Sur la page Paramètres de base du cluster, recherchez la section Optimiser les options de déploiement avec la classe de calcul Autopilot. Cette section affiche les paramètres de cluster qui doivent être modifiés pour répondre aux exigences du mode Autopilot.

  3. Cliquez sur Activer la classe de calcul Autopilot. GKE modifie le cluster si nécessaire.

  4. Configurez d'autres paramètres de cluster en fonction de vos besoins. Si vous modifiez un paramètre qui rend le cluster incompatible avec Autopilot, un message d'avertissement s'affiche.

Sélectionner une ComputeClass Autopilot dans une charge de travail

Vous pouvez exécuter une charge de travail en mode Autopilot dans votre cluster Standard en sélectionnant une ComputeClass qui utilise le mode Autopilot. Pour exécuter une charge de travail en mode Autopilot, sélectionnez l'une des options suivantes :

Console

  1. Dans la Google Cloud console, accédez à la page Charges de travail GKE.

    Accéder à la page Charges de travail

  2. Cliquez sur Déployer ou Créer une tâche. La page de création de charge de travail pour un déploiement ou une tâche s'affiche.

  3. Dans la section Nœuds, sélectionnez Classe de calcul Autopilot.

  4. Dans la section Sélectionner une classe de calcul, dans la liste déroulante Classe de calcul, sélectionnez une ComputeClass qui utilise le mode Autopilot. Cette ComputeClass peut être l'une des suivantes :

    • L'une des ComputeClasses Autopilot intégrées, suivantes, qui placent les charges de travail à usage général sur la plate-forme de calcul optimisée pour les conteneurs Autopilot :

      • autopilot
      • autopilot-spot
    • Une ComputeClass que vous créez, telle que la n4-class ComputeClass décrite dans la section Configurer une ComputeClass Autopilot personnalisée.

  5. Configurez et créez la charge de travail.

CLI kubectl

Pour sélectionner une ComputeClass Autopilot dans une charge de travail, utilisez un sélecteur de nœuds pour le libellé cloud.google.com/compute-class. Il s'agit du même libellé que celui que vous utilisez pour sélectionner n'importe quelle autre ComputeClass dans GKE. Les étapes suivantes vous montrent comment créer un exemple de déploiement qui sélectionne une ComputeClass et vérifie que les pods s'exécutent en mode Autopilot :

  1. Enregistrez l'exemple de déploiement suivant sous le nom autopilot-cc-deployment.yaml :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

    Remplacez COMPUTE_CLASS par le nom de la classe de calcul à utiliser. Cette valeur peut être l'une des suivantes :

    • L'une des ComputeClasses Autopilot intégrées, suivantes, qui placent les charges de travail à usage général sur la plate-forme de calcul optimisée pour les conteneurs Autopilot :

      • autopilot
      • autopilot-spot
    • Une ComputeClass que vous créez, telle que la n4-class ComputeClass décrite dans la section Configurer une ComputeClass Autopilot personnalisée.

  2. Déployer la charge de travail :

    kubectl apply -f autopilot-cc-deployment.yaml
    

Configurer une ComputeClass Autopilot personnalisée

Vous pouvez configurer des ComputeClasses personnalisées pour utiliser Autopilot. Utilisez une ComputeClass Autopilot personnalisée dans les cas suivants :

  • Vos charges de travail nécessitent du matériel spécifique pour fonctionner de manière optimale, comme des GPU ou une certaine série de machines Compute Engine.
  • Vous souhaitez ajuster les paramètres de nœud tels que les zones ou les rejets tout en utilisant la plate-forme de calcul optimisée pour les conteneurs Autopilot.

Si vos charges de travail ne répondent pas à ces exigences, nous vous recommandons d'utiliser l'une des ComputeClasses Autopilot intégrées. Pour sélectionner une ComputeClass Autopilot intégrée, consultez la section précédente Sélectionner une ComputeClass Autopilot dans une charge de travail.

Créer une ComputeClass Autopilot personnalisée

  1. Enregistrez l'un des exemples de fichiers manifestes ComputeClass suivants :

    • Sélectionner des machines spécifiques :

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: n4-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - machineFamily: n4
          spot: true
          minCores: 16
        - machineFamily: n4
          spot: true
        - machineFamily: n4
          spot: false
        activeMigration:
          optimizeRulePriority: true
      

      Ce fichier manifeste comprend les champs suivants :

      • autopilot : active le mode Autopilot pour la ComputeClass. Si vous spécifiez ce champ dans une ComputeClass que vous déployez sur un cluster Autopilot, GKE l'ignore.
      • priorities: définit un tableau de trois configurations différentes de la famille de machines N4.
      • activeMigration: permet à GKE de migrer des pods vers des configurations plus prioritaires dans la liste lorsque des ressources deviennent disponibles.
    • Utiliser la plate-forme de calcul optimisée pour les conteneurs avec des modifications :

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: general-purpose-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - podFamily: general-purpose
        priorityDefaults:
          location:
            zones: ['us-central1-a','us-central1-b','us-central1-f']
      

      Ce fichier manifeste comprend les champs suivants :

      • autopilot : active le mode Autopilot pour la ComputeClass. Si vous spécifiez ce champ dans une ComputeClass que vous déployez sur un cluster Autopilot, GKE l'ignore.
      • priorities.podFamily : utilise la règle de priorité podFamily pour exécuter des pods sur la plate-forme de calcul optimisée pour les conteneurs Autopilot.
      • priorityDefaults.location: définit les zones dans lesquelles GKE doit créer des nœuds pour les pods qui utilisent la ComputeClass.
  2. Déployez la ComputeClass :

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Remplacez PATH_TO_COMPUTECLASS_MANIFEST par le chemin d'accès au fichier manifeste ComputeClass de l'étape précédente.

  3. Vérifiez que la ComputeClass existe :

    kubectl get computeclasses
    

    Le résultat ressemble à ce qui suit :

    NAME                  AGE
    n4-class              3s
    

Activer Autopilot pour une ComputeClass personnalisée existante

Vous pouvez activer Autopilot dans les ComputeClasses personnalisées existantes qui se trouvent dans un cluster Standard. L'activation d'Autopilot dans une ComputeClass qui se trouve dans un cluster Autopilot n'a aucun effet, car l'ensemble du cluster utilise le mode Autopilot.

Une fois que vous avez activé Autopilot pour une ComputeClass existante, GKE utilise Autopilot pour exécuter les nouveaux pods qui sélectionnent la ComputeClass. Si vous avez des pods existants sur des nœuds Standard qui sélectionnent la ComputeClass Autopilot, ces pods n'utilisent Autopilot que lorsqu'ils sont recréés.

Pour mettre à jour une ComputeClass personnalisée existante afin d'utiliser le mode Autopilot, procédez comme suit :

  1. Dans un éditeur de texte, mettez à jour le fichier manifeste de votre ComputeClass existante pour ajouter le champ spec.autopilot :

    spec:
      autopilot:
        enabled: true
    
  2. Remplacez la ressource ComputeClass existante dans l'API Kubernetes par la spécification mise à jour :

    kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
    

    Remplacez PATH_TO_UPDATED_MANIFEST par le chemin d'accès à votre fichier manifeste mis à jour.

  3. Pour déclencher la création de nœuds, recréez toutes les charges de travail qui utilisent la classe de calcul.

Une fois que vous avez appliqué le fichier manifeste mis à jour, tous les nouveaux nœuds que GKE crée pour cette ComputeClass utilisent Autopilot. GKE ne modifie aucun nœud existant créé avant la mise à jour.

Vérifier que votre charge de travail utilise Autopilot

Sélectionnez l'une des options suivantes :

Console

  1. Dans la Google Cloud console, accédez à la page Charges de travail GKE.

    Accéder à la page Charges de travail

  2. Pour votre charge de travail, vérifiez la valeur dans la colonne Type de nœud. Si la charge de travail utilise le mode Autopilot, cette valeur est Géré par Autopilot.

CLI kubectl

Vérifiez les noms des nœuds qui exécutent vos pods :

kubectl get pods -l=app=hello -o wide

Le résultat ressemble à ce qui suit :

NAME                       READY   STATUS    RESTARTS   AGE     IP             NODE                                         NOMINATED NODE   READINESS GATES
helloweb-79b9f6f75-5wwc9   1/1     Running   0          152m    10.102.1.135   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>
helloweb-79b9f6f75-9skb9   1/1     Running   0          4d3h    10.102.0.140   gk3-cluster-1-nap-10abc8ya1-632bac02-hjl6   <none>           <none>
helloweb-79b9f6f75-h7bdv   1/1     Running   0          152m    10.102.1.137   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>

Dans ce résultat, le préfixe gk3- dans la colonne Nœud indique que le nœud est géré par Autopilot.

Appliquer une ComputeClass Autopilot par défaut

Vous pouvez définir une ComputeClass intégrée ou personnalisée comme ComputeClass par défaut pour un espace de noms ou pour l'ensemble d'un cluster. La ComputeClass par défaut s'applique à tous les pods qui ne sélectionnent pas explicitement une autre ComputeClass. Si vous définissez une ComputeClass Autopilot par défaut, vous pouvez vous assurer que tous les pods s'exécutent en mode Autopilot, sauf si une charge de travail sélectionne une autre option.

Si la ComputeClass que vous définissez par défaut utilise des règles de priorité podFamily, les pods qui ne sélectionnent pas une autre ComputeClass peuvent s'exécuter en tant que pods Autopilot à usage général. Cette méthode vous permet d'utiliser le modèle de facturation basé sur les pods par défaut dans votre cluster ou votre espace de noms. Elle est utile lorsque la plupart de vos charges de travail n'ont pas d'exigences matérielles spécifiques.

Pour en savoir plus, consultez Appliquer des ComputeClasses aux pods par défaut.

Étape suivante