Vous pouvez définir des ensembles d'attributs de nœud et de paramètres d'autoscaling que Google Kubernetes Engine (GKE) utilise pour créer des nœuds afin d'exécuter des pods à l'aide de ComputeClasses. Cette page décrit le fonctionnement des classes de calcul, leurs cas d'utilisation et leurs avantages, ainsi que les types de classes de calcul disponibles.
Ces informations sont destinées aux personnes suivantes :
- Architectes cloud et ingénieurs de plate-forme qui souhaitent réduire les frais généraux associés à la gestion de l'infrastructure de cluster.
- Opérateurs d'applications et ingénieurs SRE qui souhaitent se concentrer sur l'exploitation des charges de travail sans se soucier de l'infrastructure sous-jacente.
À propos des ComputeClasses et de l'autoscaling des clusters
Une ComputeClass est un ensemble d'attributs de nœud et de paramètres d'autoscaling qui existe en tant qu'objet de l'API Kubernetes dans un cluster GKE. Vous pouvez sélectionner une ComputeClass dans n'importe quelle charge de travail Kubernetes que vous déployez. L'autoscaling de cluster GKE utilise les attributs d'une ComputeClass pour créer des nœuds pour les charges de travail.
Les ingénieurs de plate-forme peuvent utiliser ComputeClasses pour configurer l'infrastructure pour différents types de charges de travail, de sorte que chaque nouveau nœud soit optimisé pour les exigences spécifiques de vos applications. Les ComputeClasses améliorent la vitesse et la flexibilité de l'autoscaling GKE, et vous offrent une méthode déclarative pour configurer les options d'infrastructure dans vos clusters. Pour en savoir plus, consultez la section Avantages de l'utilisation de ComputeClasses.
Certaines fonctionnalités et caractéristiques de GKE ne sont disponibles qu'avec les ComputeClasses, par exemple :
- Priorités de calcul de remplacement : définissez plusieurs ensembles de configurations d'infrastructure dans une ComputeClass, hiérarchisés en fonction de vos préférences. Lors de la mise à l'échelle, si la configuration la plus appropriée n'est pas disponible, GKE revient à la configuration suivante.
- Migration active vers des nœuds de priorité supérieure : lorsqu'elle est configurée, GKE remplace automatiquement les nœuds qui se trouvent plus bas dans votre liste de priorités de remplacement par des nœuds qui se trouvent plus haut dans cette liste au fil du temps. Par conséquent, vos pods s'exécutent finalement sur vos nœuds préférés dans une ComputeClass, même si ce matériel n'était pas disponible lorsque vous avez créé la charge de travail.
- Autopilot dans GKE Standard : exécutez des charges de travail en mode GKE Autopilot pour utiliser les fonctionnalités Autopilot telles que la plate-forme de calcul optimisée pour les conteneurs et la facturation basée sur les pods, même dans les clusters Standard. GKE gère ces nœuds et charges de travail, ce qui vous permet de bénéficier des avantages du mode Autopilot dans n'importe quel cluster.
Avantages des ComputeClasses
Les ComputeClasses offrent aux administrateurs et opérateurs de plate-forme des avantages tels que les suivants :
- Amélioration de la disponibilité des ressources : les ComputeClasses étendent les capacités de l'autoscaling de cluster GKE. Les fonctionnalités ComputeClass, telles que les priorités de secours et les paramètres de consolidation des nœuds, peuvent réduire le risque de blocage des pods à l'état "En attente" et augmenter la gamme d'options que vous pouvez utiliser pour mettre à l'échelle vos nœuds.
- Configuration déclarative au niveau de la plate-forme : les ComputeClasses permettent aux ingénieurs de plate-forme de décrire de manière déclarative les configurations de nœuds pour différents types de charges de travail. L'autoscaling GKE gère la création et la configuration des nœuds et des pools de nœuds. Vous pouvez intégrer vos ComputeClasses à vos pipelines CI/CD pour assurer la cohérence de l'infrastructure provisionnée sur votre plate-forme.
- Réduction des frais de gestion : les ComputeClasses réduisent la complexité de la gestion de l'infrastructure et des charges de travail à grande échelle. Les ingénieurs de plate-forme déclarent des classes d'infrastructure, et les opérateurs d'applications sélectionnent une classe pertinente dans une charge de travail. GKE gère le scaling et la configuration matérielle des nœuds, et applique les rejets, les tolérances et les étiquettes.
À propos de la ressource personnalisée ComputeClass
Les ComputeClasses sont des ressources personnalisées Kubernetes. Vous pouvez définir la spécification d'une ComputeClass dans un fichier manifeste et la créer dans vos clusters, de la même manière que vous définissez et créez vos ressources de charge de travail Kubernetes, comme les déploiements et les services.
L'exemple de fichier manifeste suivant définit une ComputeClass nommée n4
:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
Lorsqu'un pod sélectionne cette ComputeClass, GKE effectue les opérations suivantes lorsqu'il crée des nœuds :
- GKE crée des nœuds qui utilisent la série de machines N4.
- Si la série de machines N4 n'est pas disponible, GKE crée des nœuds qui utilisent la série de machines N2 à la place.
- Si la série de machines N2 n'est pas disponible, GKE attend que des ressources le soient pour planifier le pod.
Vous pouvez contrôler différents paramètres de vos nœuds à l'aide de ComputeClasses, y compris les accélérateurs, les paramètres système des nœuds, les emplacements des nœuds et le comportement de secours de GKE lorsque les ressources matérielles ne sont pas disponibles. Pour en savoir plus sur toutes les configurations disponibles pour les ComputeClasses, consultez la définition de ressource personnalisée ComputeClass.
Sélection de ComputeClass dans les charges de travail
Pour utiliser une ComputeClass pour une charge de travail GKE, vous devez sélectionner la ComputeClass dans le fichier manifeste de la charge de travail à l'aide d'un sélecteur de nœuds pour le libellé cloud.google.com/compute-class
.
L'exemple de fichier manifeste Deployment suivant sélectionne une ComputeClass :
Remplacez COMPUTE_CLASS
par le nom d'une ComputeClass existante dans le cluster. Par exemple, vous pouvez spécifier la ComputeClass n4
à partir de la section À propos de la ressource personnalisée ComputeClass ou la ComputeClass intégrée autopilot
.
Configuration des nœuds dans les spécifications de charge de travail
Les clusters GKE Autopilot et le provisionnement automatique des nœuds dans GKE Standard vous permettent d'utiliser des sélecteurs de nœuds dans vos pods pour créer des nœuds dotés de propriétés spécifiques, comme des familles de machines, des Spot VM ou des GPU et TPU. Les ComputeClasses vous permettent de définir ces exigences de manière centralisée au lieu d'ajouter des sélecteurs individuels à chaque charge de travail.
À propos de l'application des ComputeClasses par défaut
Vous pouvez configurer GKE pour qu'il applique une ComputeClass par défaut aux pods qui n'en sélectionnent pas de spécifique. Vous pouvez définir une ComputeClass par défaut pour des espaces de noms spécifiques ou pour un cluster entier. Pour savoir comment configurer vos clusters ou espaces de noms avec une classe par défaut, consultez Appliquer des ComputeClasses aux pods par défaut.
Le tableau suivant décrit les effets de la définition d'une ComputeClass comme classe de calcul par défaut pour un espace de noms ou pour un cluster :
Effets des ComputeClasses par défaut | |
---|---|
Valeur par défaut au niveau de l'espace de noms |
|
Valeur par défaut au niveau du cluster |
|
Si GKE applique une ComputeClass par défaut au niveau de l'espace de noms à un pod, ce pod n'activera pas la ComputeClass par défaut au niveau du cluster, car GKE ajoute un sélecteur de nœud pour la classe par défaut au niveau de l'espace de noms au pod.
ComputeClasses par défaut au niveau du cluster
Lorsque vous activez les ComputeClasses par défaut au niveau du cluster, un objet ComputeClass
nommé default
définit les règles d'autoscaling des nœuds pour le cluster. Si votre cluster possède déjà une ComputeClass nommée default
, GKE utilise cette configuration de ComputeClass pour le cluster. Si le cluster ne dispose pas d'une ComputeClass personnalisée nommée default
, GKE se comporte comme si les règles ComputeClass
suivantes s'appliquaient :
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
Par défaut, GKE n'applique aucun comportement de secours et ne modifie pas la configuration des nœuds mis à l'échelle automatiquement. Pour appliquer des propriétés spécifiques aux nœuds avec autoscaling par défaut, vous devez déployer une ComputeClass personnalisée nommée default
.
Tenez compte des points suivants lorsque vous configurez votre classe de calcul par défaut au niveau du cluster :
- Pour éviter que les pods ne restent bloqués à l'état
Pending
, définissez le champspec.whenUnsatisfiable
surScaleUpAnyway
. Cette valeur permet à GKE de créer des nœuds même si les pods demandent des familles de machines Compute Engine qui ne figurent pas dans les règles de priorité de la classe par défaut au niveau du cluster. Si vous souhaitez forcer ces pods à utiliser les familles de machines qui se trouvent dans la ComputeClass par défaut, définissez ce champ surDoNotScaleUp
. - Pour limiter les modifications apportées à la
default
ComputeClass, utilisez un ClusterRole RBAC pour limiter les opérations update, patch, delete et create sur la ressourceComputeClass
nomméedefault
. - Pour modifier les paramètres de consolidation des nœuds par défaut de l'autoscaler de cluster, utilisez le champ
spec.autoscalingPolicy
dans la spécification ComputeClass. Les paramètres que vous spécifiez pour ce champ dans la ComputeClass par défaut au niveau du cluster s'appliquent à tous les nœuds de votre cluster. Pour en savoir plus, consultez Définir les paramètres d'autoscaling pour la consolidation des nœuds.
Étapes suivantes
- En savoir plus sur les ComputeClasses intégrées
- En savoir plus sur les ComputeClasses personnalisées
- Lire la définition de ressource personnalisée ComputeClass
- Déployer une ComputeClass et la sélectionner dans une charge de travail