Puedes definir conjuntos de atributos de nodo y ajustes de escalado automático que Google Kubernetes Engine (GKE) usa para crear nodos que ejecuten pods mediante ComputeClasses. En esta página se describe cómo funcionan las clases de Compute, los casos prácticos y las ventajas, así como los tipos de clases de Compute disponibles.
Esta información está dirigida a las siguientes personas:
- Arquitectos de la nube e ingenieros de plataformas que quieran reducir la sobrecarga asociada a la gestión de la infraestructura de clústeres.
- Operadores de aplicaciones e ingenieros de fiabilidad de sitios que quieran centrarse en el funcionamiento de las cargas de trabajo sin tener que pensar en la infraestructura subyacente.
Acerca de ComputeClasses y el autoescalado de clústeres
Una ComputeClass es un conjunto de atributos de nodo y ajustes de autoescalado que existe como 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 autoescalado de clústeres de GKE usa los atributos de un ComputeClass para crear nodos para las cargas de trabajo.
Los ingenieros de plataformas pueden usar ComputeClasses para configurar la infraestructura de varios tipos de cargas de trabajo, de forma que cada nodo nuevo se optimice para los requisitos específicos de tus aplicaciones. Las ComputeClasses mejoran la velocidad y la flexibilidad del autoescalado de GKE, y te ofrecen un método declarativo para configurar las opciones de infraestructura en tus clústeres. Para obtener más información, consulta la sección Ventajas de usar ComputeClasses.
Algunas funciones y capacidades específicas de GKE solo están disponibles con ComputeClasses, como las siguientes:
- Prioridades de cálculo alternativas: define varios conjuntos de configuraciones de infraestructura en una ComputeClass, priorizadas según tus preferencias. Durante el escalado, si la configuración preferida no está disponible, GKE recurre a la siguiente.
- Migración activa a nodos de mayor prioridad: cuando se configura, GKE sustituye automáticamente los nodos que tienen una prioridad inferior en tu lista de prioridades de respaldo por nodos que tienen una prioridad superior en esa lista a lo largo del tiempo. Por lo tanto, tus pods se ejecutan en los nodos que prefieras de una ComputeClass, aunque ese hardware no estuviera 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 computación optimizada para contenedores y la facturación basada en pods, incluso en clústeres Standard. GKE gestiona estos nodos y cargas de trabajo, lo que te ofrece las ventajas del modo Autopilot en cualquier clúster.
Ventajas de ComputeClasses
Las clases de Compute ofrecen a los administradores y operadores de la plataforma ventajas como las siguientes:
- Mejora de la disponibilidad de recursos: las ComputeClasses amplían las funciones del autoescalado de clústeres de GKE. Las funciones de ComputeClass, como las prioridades de reserva y los parámetros de consolidación de nodos, pueden reducir el riesgo de que los pods se queden en estado Pending y aumentar el número de opciones que puedes usar para escalar tus nodos.
- Configuración declarativa a nivel de plataforma: las ComputeClasses permiten a los ingenieros de la plataforma describir de forma declarativa las configuraciones de los nodos para distintos tipos de cargas de trabajo. El autoescalado de GKE gestiona la creación y la configuración de nodos y grupos de nodos. Puedes integrar tus ComputeClasses en tus pipelines de CI/CD para que la infraestructura aprovisionada sea coherente en toda tu plataforma.
- Menor sobrecarga de gestión: las ComputeClasses reducen la complejidad de gestionar la infraestructura y las cargas de trabajo a gran escala. Los ingenieros de plataformas declaran clases de infraestructura y los operadores de aplicaciones seleccionan una clase relevante en una carga de trabajo. GKE gestiona el escalado, la configuración del hardware de los nodos y aplica intolerancias, 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 forma similar a como defines y creas tus recursos de carga de trabajo de Kubernetes, como las implementaciones y los servicios.
En el siguiente ejemplo de manifiesto se define una clase Compute llamada 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 este ComputeClass, GKE hace lo siguiente al crear nodos:
- 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 los recursos estén disponibles para programar el pod.
Puedes controlar varios ajustes de tus nodos mediante ComputeClasses, como aceleradores, ajustes del sistema de nodos, ubicaciones de nodos y el comportamiento de GKE cuando no hay recursos de hardware disponibles. Para obtener más información sobre todas las configuraciones disponibles de ComputeClasses, consulta la CustomResourceDefinition de ComputeClass.
Selección de ComputeClass en cargas de trabajo
Para usar una ComputeClass en una carga de trabajo de GKE, selecciona la ComputeClass en el manifiesto de la carga de trabajo mediante un selector de nodos para la etiqueta cloud.google.com/compute-class
.
En el siguiente ejemplo de manifiesto de Deployment se selecciona un ComputeClass:
Sustituye COMPUTE_CLASS
por el nombre de una ComputeClass que exista en el clúster. Por ejemplo, puedes especificar la n4
ComputeClass de la sección
Acerca del recurso personalizado ComputeClass
o la autopilot
ComputeClass integrada.
Configuración de nodos en especificaciones de cargas de trabajo
Los clústeres de Autopilot de GKE 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, GPUs o TPUs. ComputeClasses te permite definir estos requisitos de forma centralizada en lugar de añadir selectores individuales a cada carga de trabajo.
Acerca de la aplicación de ComputeClasses de forma predeterminada
Puedes configurar GKE para que aplique una ComputeClass de forma predeterminada a los pods que no seleccionen una ComputeClass específica. Puedes definir un ComputeClass predeterminado 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 Aplicar ComputeClasses a los pods de forma predeterminada.
En la siguiente tabla se describen los efectos de definir una ComputeClass como predeterminada para un espacio de nombres o un clúster:
Efectos de las ComputeClasses predeterminadas | |
---|---|
Valor predeterminado a nivel de espacio de nombres |
|
Valor predeterminado a nivel de clúster |
|
Si GKE aplica una ComputeClass predeterminada a nivel de espacio de nombres a un pod, ese pod no activará la ComputeClass predeterminada a nivel de clúster, ya que GKE añade un selector de nodos para la clase predeterminada a nivel de espacio de nombres al pod.
ComputeClasses predeterminados a nivel de clúster
Cuando habilitas ComputeClasses predeterminadas a nivel de clúster, un objeto ComputeClass
llamado default
define las reglas de autoescalado de nodos del 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 respaldo y no cambia la configuración de los nodos escalados automáticamente. Para aplicar propiedades específicas a los nodos escalados automáticamente de forma predeterminada, debes implementar un ComputeClass personalizado llamado default
.
Ten en cuenta lo siguiente al configurar tu clase de cálculo predeterminada a nivel de clúster:
- Para evitar que los pods se queden en el estado
Pending
, asigna el valorScaleUpAnyway
al campospec.whenUnsatisfiable
. Este valor permite que GKE cree nodos aunque los pods soliciten familias de máquinas de Compute Engine que no estén en las reglas de prioridad de la clase predeterminada a nivel de clúster. Si quieres forzar a estos pods a usar las familias de máquinas que están en la ComputeClass predeterminada, asigna a este campo el valorDoNotScaleUp
. - Para restringir los cambios en
default
ComputeClass, usa un ClusterRole de control de acceso basado en roles (RBAC) para restringir las operaciones update, patch, delete y create en el recursoComputeClass
llamadodefault
. - Para cambiar los parámetros de consolidación de nodos predeterminados del escalador automático de clústeres, usa el campo
spec.autoscalingPolicy
en la especificación de ComputeClass. Los parámetros que especifiques en este campo de la ComputeClass predeterminada a nivel de clúster se aplicarán a todos los nodos del clúster. Para obtener más información, consulta Definir parámetros de escalado automático para la consolidación de nodos.
Siguientes pasos
- Información sobre las ComputeClasses integradas
- Información sobre las ComputeClasses personalizadas
- Leer la definición de recurso personalizado ComputeClass
- Desplegar una ComputeClass y seleccionarla en una carga de trabajo