Puedes definir conjuntos de atributos de nodos y parámetros de configuración del ajuste de escala automático que Google Kubernetes Engine (GKE) usa para crear nodos y ejecutar Pods con ComputeClasses. En esta página, se describen cómo funcionan las ComputeClasses, sus casos de uso y beneficios, y los tipos disponibles.
Esta información está destinada a las siguientes personas:
- Arquitectos de Cloud y ingenieros de plataformas que desean reducir la sobrecarga asociada con la administración de la infraestructura de clústeres
- Operadores de aplicaciones y SRE que desean enfocarse en operar cargas de trabajo sin pensar en la infraestructura subyacente
Acerca de ComputeClasses y el ajuste de escala automático de clústeres
Un ComputeClass es un conjunto de atributos de nodos y parámetros de configuración del ajuste de escala automático que existe como un objeto de la API de Kubernetes en un clúster de GKE. Puedes seleccionar una ComputeClass en cualquier carga de trabajo de Kubernetes que implementes. El escalamiento automático de clúster de GKE usa los atributos de un objeto ComputeClass para crear nodos para las cargas de trabajo.
Los ingenieros de plataformas pueden usar ComputeClasses para configurar la infraestructura para varios tipos de cargas de trabajo, de modo que cada nodo nuevo se optimice para los requisitos específicos de tus aplicaciones. Las ComputeClasses mejoran la velocidad y la flexibilidad del ajuste de escala automático de GKE, y te proporcionan un método declarativo para configurar las opciones de infraestructura en todos tus clústeres. Para obtener más información, consulta la sección Beneficios de usar ComputeClasses.
Algunas capacidades y funciones específicas de GKE solo están disponibles con ComputeClasses, como las siguientes:
- Prioridades de procesamiento de resguardo: Define varios conjuntos de configuraciones de infraestructura en una ComputeClass, priorizados según tus preferencias. Durante el ajuste de escala, si la configuración más preferida no está disponible, GKE recurre a la siguiente configuración.
- Migración activa a nodos de prioridad más alta: Cuando se configura, GKE reemplaza automáticamente los nodos que tienen una prioridad más baja en tu lista de prioridades de respaldo por nodos que tienen una prioridad más alta en esa lista con el tiempo. Como resultado, tus Pods se ejecutan en los nodos que más prefieres en una ComputeClass, incluso si ese hardware no estaba disponible cuando creaste la carga de trabajo.
- Autopilot en GKE Standard: Ejecuta cargas de trabajo en el modo Autopilot de GKE para usar funciones de Autopilot, como la plataforma de procesamiento optimizada para contenedores y la facturación basada en Pods, incluso en clústeres Standard. GKE administra estos nodos y cargas de trabajo, lo que te brinda los beneficios del modo Autopilot en cualquier clúster.
Beneficios de ComputeClasses
Las ComputeClasses proporcionan a los administradores y operadores de la plataforma los siguientes beneficios:
- Mejora en la obtención de recursos: Las ComputeClasses expanden las capacidades del ajuste de escala automático del clúster de GKE. Las funciones de ComputeClass, como las prioridades de resguardo y los parámetros de consolidación de nodos, pueden reducir el riesgo de que los Pods queden en estado pendiente y aumentar el rango de opciones que puedes usar para escalar tus nodos.
- Configuración declarativa a nivel de la plataforma: Las ComputeClasses permiten que los ingenieros de la plataforma describan de forma declarativa las configuraciones de los nodos para varios tipos de cargas de trabajo. El ajuste de escala automático de GKE administra la creación y configuración de nodos y grupos de nodos. Puedes integrar tus ComputeClasses en tus canalizaciones de CI/CD para tener coherencia en la infraestructura aprovisionada en toda tu plataforma.
- Reducción de la sobrecarga de administración: Las ComputeClasses reducen la complejidad de la administración de la infraestructura y las cargas de trabajo a gran escala. Los ingenieros de plataformas declaran clases de infraestructura, y los operadores de apps seleccionan una clase relevante en una carga de trabajo. GKE administra el escalamiento y la configuración del hardware de los nodos, y aplica taints, tolerancias y etiquetas.
Acerca del recurso personalizado ComputeClass
Las ComputeClasses son recursos personalizados de Kubernetes. Puedes definir la especificación de un ComputeClass en un archivo de manifiesto y crearlo en tus clústeres, de manera similar a como defines y creas tus recursos de cargas de trabajo de Kubernetes, como Deployments y Services.
En el siguiente manifiesto de ejemplo, se define un ComputeClass llamado n4
:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
Cuando un Pod selecciona esta ComputeClass, GKE hace lo siguiente cuando crea nodos nuevos:
- GKE crea nodos que usan la serie de máquinas N4.
- Si la serie de máquinas N4 no está disponible, GKE crea nodos que usan la serie de máquinas N2.
- Si la serie de máquinas N2 no está disponible, GKE espera hasta que haya recursos disponibles para programar el Pod.
Puedes controlar varios parámetros de configuración de tus nodos con ComputeClasses, incluidos los aceleradores, la configuración del sistema de nodos, las ubicaciones de los nodos y el comportamiento de respaldo de GKE cuando no hay recursos de hardware disponibles. Para obtener más información sobre todas las configuraciones disponibles para ComputeClasses, consulta la CustomResourceDefinition de ComputeClass.
Selección de ComputeClass en cargas de trabajo
Para usar un ComputeClass para una carga de trabajo de GKE, selecciona el ComputeClass en el manifiesto de la carga de trabajo con un selector de nodos para la etiqueta cloud.google.com/compute-class
.
En el siguiente manifiesto de Deployment de ejemplo, se selecciona un ComputeClass:
Reemplaza COMPUTE_CLASS
por el nombre de un objeto ComputeClass que exista en el clúster. Por ejemplo, puedes especificar el n4
ComputeClass de la sección Acerca del recurso personalizado ComputeClass o el ComputeClass integrado autopilot
.
Configuración de nodos en las especificaciones de cargas de trabajo
Los clústeres de GKE Autopilot y el aprovisionamiento automático de nodos en GKE Standard te permiten usar selectores de nodos en tus Pods para crear nodos que tengan propiedades específicas, como familias de máquinas, VMs Spot o GPUs y TPUs. Las ComputeClasses te permiten definir estos requisitos de forma centralizada en lugar de agregar selectores individuales a cada carga de trabajo.
Acerca de la aplicación predeterminada de ComputeClasses
Puedes configurar GKE para que aplique una ComputeClass de forma predeterminada a los Pods que no seleccionan una ComputeClass específica. Puedes definir una ComputeClass predeterminada para espacios de nombres específicos o para todo un clúster. Para obtener más información sobre cómo configurar tus clústeres o espacios de nombres con una clase predeterminada, consulta Aplica ComputeClasses a los Pods de forma predeterminada.
En la siguiente tabla, se describen los efectos de establecer un ComputeClass como el valor predeterminado para un espacio de nombres o para un clúster:
Efectos de las ComputeClasses predeterminadas | |
---|---|
Valor predeterminado a nivel del espacio de nombres |
|
Valor predeterminado a nivel del clúster |
|
Si GKE aplica un valor predeterminado de ComputeClass a nivel del espacio de nombres a un Pod, ese Pod no activará el valor predeterminado de ComputeClass a nivel del clúster, ya que GKE agrega un selector de nodos para la clase predeterminada a nivel del espacio de nombres al Pod.
ComputeClasses predeterminadas a nivel del clúster
Cuando habilitas ComputeClasses predeterminadas a nivel del clúster, un objeto ComputeClass
llamado default
define las reglas de ajuste de escala automático de nodos para el clúster. Si tu clúster ya tiene una ComputeClass llamada default
, GKE usará esa configuración de ComputeClass para el clúster. Si el clúster no tiene una ComputeClass personalizada llamada default
, GKE se comporta como si se aplicaran las siguientes reglas de ComputeClass
:
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
De forma predeterminada, GKE no aplica ningún comportamiento de resguardo ni cambia la configuración de los nodos con ajuste de escala automático. Para aplicar propiedades específicas a los nodos autoescalados de forma predeterminada, debes implementar una ComputeClass personalizada llamada default
.
Ten en cuenta lo siguiente cuando configures tu clase de procesamiento predeterminada a nivel del clúster:
- Para evitar que los Pods queden atascados en el estado
Pending
, establece el campospec.whenUnsatisfiable
enScaleUpAnyway
. Este valor permite que GKE cree nodos incluso si los Pods solicitan familias de máquinas de Compute Engine que no se encuentran en las reglas de prioridad de la clase predeterminada a nivel del clúster. Si deseas forzar a estos Pods a usar las familias de máquinas que se encuentran en el ComputeClass predeterminado, configura este campo comoDoNotScaleUp
. - Para restringir los cambios en el objeto
default
ComputeClass, usa un ClusterRole de RBAC para restringir las operaciones update, patch, delete y create en el recursoComputeClass
llamadodefault
. - Para cambiar los parámetros predeterminados de consolidación de nodos del escalador automático del clúster, usa el campo
spec.autoscalingPolicy
en la especificación de ComputeClass. Los parámetros que especifiques para este campo en el valor predeterminado de ComputeClass a nivel del clúster se aplican a todos los nodos del clúster. Para obtener más información, consulta Configura parámetros de ajuste de escala automático para la consolidación de nodos.
¿Qué sigue?
- Más información sobre las ComputeClasses integradas
- Más información sobre las clases de procesamiento personalizadas
- Lee la CustomResourceDefinition de ComputeClass
- Implementa una ComputeClass y selecciónala en una carga de trabajo