Los márgenes de seguridad de capacidad te ayudan a reducir la latencia de inicio de los Pods para tus cargas de trabajo de Google Kubernetes Engine (GKE), ya que te permiten declarar de forma proactiva niveles de márgenes de seguridad de capacidad activos o en espera en tu clúster. Si declaras la capacidad de repuesto con anticipación, puedes lograr inicios de cargas de trabajo más rápidos de una manera rentable.
En este documento, se explica cómo funcionan los márgenes de seguridad de capacidad. Para obtener información sobre cómo habilitar y usar los márgenes de seguridad de capacidad, consulta Configura los márgenes de seguridad de capacidad.
Cuándo usar los márgenes de seguridad de capacidad
Usa márgenes de seguridad de capacidad para las aplicaciones que son sensibles a la latencia de inicio y necesitan escalarse rápidamente. Cuando experimentas aumentos repentinos en el tráfico, un margen de seguridad activo proporciona capacidad aprovisionada previamente que está diseñada para el escalamiento de baja latencia. Cuando experimentas un aumento sostenido en el tráfico, un margen de seguridad en espera proporciona programación de Pods a un costo más asequible que el aprovisionamiento previo.
Los márgenes de seguridad de capacidad proporcionan los siguientes beneficios:
- Minimiza la latencia de escalamiento: los márgenes de seguridad activos proporcionan nodos en ejecución, lo que ayuda a minimizar la latencia. Los márgenes de seguridad en espera se reanudan rápidamente, lo que proporciona una disponibilidad de capacidad más rápida que los nodos nuevos a un costo más bajo en comparación con los márgenes de seguridad activos.
- Aprovisionamiento excesivo rentable: los márgenes de seguridad de capacidad te ayudan a mantener una red de seguridad. Para las cargas de trabajo a gran escala, este enfoque suele ser más rentable que otros métodos de aprovisionamiento excesivo (por ejemplo, reducir los objetivos de utilización de HorizontalPodAutoscaler [HPA]), lo que puede aumentar la capacidad inactiva de forma lineal a medida que crece el clúster.
- Cumple con los requisitos de la carga de trabajo: tienes control total sobre la configuración del margen de seguridad de capacidad. Las opciones incluyen la incorporación de daemonsets personalizados para precargar imágenes, ajustar el tiempo de inicio y controlar los tamaños del margen de seguridad para satisfacer tus necesidades.
Recomendamos los márgenes de seguridad de capacidad para las cargas de trabajo sensibles a la latencia que requieren un escalamiento vertical rápido, como los agentes de IA, la inferencia de IA, las aplicaciones de venta minorista durante los eventos de ventas o los servidores de juegos durante la actividad máxima de los jugadores.
Cómo funcionan los márgenes de seguridad de capacidad
Para implementar un margen de seguridad de capacidad, usa un recurso personalizado CapacityBuffer de Kubernetes para definir un margen de seguridad de capacidad de repuesto. El escalador automático del clúster de GKE supervisa los recursos CapacityBuffer y los trata como demanda pendiente para garantizar que la capacidad de repuesto esté disponible. Si tu clúster no tiene suficiente capacidad para satisfacer las solicitudes de recursos definidas en el margen de seguridad, el escalador automático del clúster aprovisiona nodos adicionales.
Cuando una carga de trabajo de alta prioridad se escala verticalmente, GKE programa la carga de trabajo en la capacidad disponible en el margen de seguridad de inmediato. Esta programación inmediata se aplica a la cantidad de réplicas o a la cantidad de recursos que se reservan en el margen de seguridad, lo que evita la demora típica asociada con el aprovisionamiento de nodos. Cuando una carga de trabajo usa una unidad de margen de seguridad, el escalador automático del clúster aprovisiona un nodo nuevo para volver a llenar el margen de seguridad.
Estrategias de márgenes de seguridad de capacidad
Puedes configurar los márgenes de seguridad de capacidad con diferentes estrategias de aprovisionamiento según tus requisitos de latencia y costo.
Margen de seguridad activo
Un margen de seguridad activo proporciona nodos en ejecución para el escalamiento de baja latencia de cargas de trabajo que se ajustan a la capacidad reservada. Debido a que los nodos ya se están ejecutando, proporcionan una latencia mínima para reclamar Pods durante un evento de escalamiento vertical.
Margen de seguridad en espera
Un margen de seguridad en espera proporciona nodos suspendidos. La estrategia en espera es más rentable que la estrategia activa, pero introduce una breve demora para reanudar el nodo antes de que acepte cargas de trabajo.
Costo y precios
La facturación de los márgenes de seguridad de capacidad difiere según el tipo de margen de seguridad:
- Márgenes de seguridad activos: se te cobran las tarifas de procesamiento estándar de GKE por las VMs en ejecución que GKE mantiene para que sirvan como capacidad de margen de seguridad activa. En Autopilot, se aplican tarifas de facturación estándar basadas en Pods a los Pods en ejecución.
- Márgenes de seguridad en espera: mientras las instancias de VM están suspendidas, no pagas costos de procesamiento (CPU o memoria). Incurres en cargos de almacenamiento menores (por ejemplo, discos de arranque de VM) y costos por recursos asociados, como direcciones IP externas estáticas. Cuando GKE reanuda las VMs en espera para alojar cargas de trabajo, se aplican tarifas de facturación estándar basadas en Pods o de procesamiento.
CapacityBuffer CRD
Para configurar un margen de seguridad de capacidad, crea una CapacityBuffer CustomResourceDefinition (CRD). Puedes configurar el margen de seguridad de capacidad para que cumpla con diferentes criterios:
- Réplicas fijas: especifica una cantidad fija de Pods de margen de seguridad para crear en función de las solicitudes de recursos de una plantilla de Pods a la que se hace referencia. Esta configuración es la forma más sencilla de crear un margen de seguridad de un tamaño conocido.
- Límites de recursos: especifica la cantidad total de CPU y memoria que debe reservar el margen de seguridad. El controlador calcula cuántos Pods de margen de seguridad crear en función de las solicitudes de recursos de una plantilla de Pods a la que se hace referencia.
- Basado en porcentajes: define el tamaño del búfer como un porcentaje de un objeto escalable existente que define un subrecurso de escala (como un Deployment, un StatefulSet, un ReplicaSet o un Job). El tamaño del margen de seguridad se ajusta de forma dinámica a medida que se escala la carga de trabajo de referencia. Los márgenes de seguridad de capacidad basados en porcentajes solo son compatibles con objetos que implementan el subrecurso de escala de Kubernetes.
Para obtener más información, consulta la documentación de referencia de CapacityBuffer CRD.
Prácticas recomendadas
Para optimizar la rentabilidad y la capacidad de respuesta cuando configures los márgenes de seguridad de capacidad, usa las siguientes recomendaciones:
- Usa una estrategia rentable y que priorice la espera: prioriza los márgenes de seguridad en espera si tus cargas de trabajo pueden tolerar una breve demora de escalamiento vertical de aproximadamente 30 segundos. Esta estrategia evita los inicios de nodos fríos de VMs nuevas sin tener que incurrir en el costo total de las VMs activas.
- Usa márgenes de seguridad activos para cargas de trabajo sensibles a la latencia: usa márgenes de seguridad activos para cargas de trabajo que no pueden tolerar los tiempos de reanudación de nodos cuando el tiempo de programación de Pods debe ser lo más bajo posible.
- Usa una estrategia híbrida para equilibrar el rendimiento y el costo: combina un margen de seguridad activo pequeño con un margen de seguridad en espera más grande para una configuración rentable. GKE prioriza el reabastecimiento del margen de seguridad activo mediante la reanudación de nodos del margen de seguridad en espera (que tarda unos 30 segundos), mientras que se aprovisionan nodos nuevos en segundo plano para rellenar el margen de seguridad en espera. Esta configuración absorbe los aumentos iniciales con capacidad activa y se adapta al crecimiento sostenido con la capacidad en espera de menor costo.
- Ajusta el tamaño de los márgenes de seguridad activos para los aumentos iniciales: define el tamaño de tu margen de seguridad activo para cubrir los aumentos repentinos iniciales de réplicas que esperas encontrar, antes de que se puedan reanudar los nodos del margen de seguridad en espera.
- Ajusta el tamaño de los márgenes de seguridad en espera para la carga sostenida: define los márgenes de seguridad en espera que sean suficientes para cubrir la carga extendida que esperas encontrar, de modo que los márgenes de seguridad puedan rellenarse en segundo plano desde un inicio en frío. Un margen de seguridad en espera de tamaño suficiente puede reducir la latencia máxima de programación de Pods al tiempo que tarda en reanudarse un nodo, que es de aproximadamente 30 segundos. Cuando el margen de seguridad de capacidad comienza a usarse y se vuelve a llenar, los nodos nuevos del margen de seguridad pasan a un estado activo antes de suspenderse. Esta estrategia ayuda a aumentar la capacidad activa durante una carga prolongada.
- Usa el simulador de márgenes de seguridad: experimenta con diferentes tamaños de márgenes de seguridad activos y en espera para obtener el mejor resultado para tu carga de trabajo específica. Ejecuta simulaciones del comportamiento de escalamiento de la carga de trabajo con el simulador de márgenes de seguridad de GKE de código abierto en https://github.com/gke-labs/buffers-simulator para ajustar las reglas de tamaño del margen de seguridad y alcanzar tus objetivos de rendimiento.
Requisitos y limitaciones
Los márgenes de seguridad de capacidad tienen los siguientes requisitos y limitaciones:
- Los márgenes de seguridad de capacidad están disponibles para los clústeres de GKE que ejecutan la versión 1.35.2-gke.1842000 o posterior para los márgenes de seguridad activos y la versión 1.36.0-gke.2253000 para los márgenes de seguridad en espera.
- Los márgenes de seguridad de capacidad solo admiten cargas de trabajo que usan un modelo de facturación basado en nodos para los grupos de nodos de Standard y los grupos de nodos de Autopilot que seleccionan hardware específico. Los márgenes de seguridad de capacidad no admiten cargas de trabajo que usan el modelo de facturación basado en Pods.
- En los clústeres de Standard, te recomendamos que habilites el aprovisionamiento automático de nodos. El aprovisionamiento automático de nodos permite que el escalador automático del clúster cree grupos de nodos nuevos en función de las solicitudes de recursos en tu CapacityBuffer. Si no habilitas el aprovisionamiento automático de nodos, el escalador automático del clúster solo escala verticalmente los grupos de nodos existentes.
- Los márgenes de seguridad de capacidad activos y en espera se cuentan en las cuotas de Compute Engine.
Los márgenes de seguridad en espera tienen las siguientes limitaciones adicionales:
- Solo se admiten en clústeres de Standard con el aprovisionamiento automático de nodos habilitado.
- No se admiten nodos con GPUs o TPUs conectadas.
- No se admiten SSD locales.
- No se admiten las claves de encriptación administradas por el cliente (CMEK).
- No se admiten los nodos de Google Kubernetes Engine confidenciales.
- Debes estar familiarizado con las limitaciones relacionadas con las operaciones de suspensión y reanudación de Compute Engine.
Algunas limitaciones clave incluyen las siguientes:
- No se admiten nodos con discos protegidos por claves de encriptación proporcionadas por el cliente (CSEK).
- No se admiten nodos con más de 208 GB de memoria.
- No se admiten instancias de Bare Metal.
- El SO del nodo debe admitir señales de suspensión ACPI S3.
- La duración del proceso de suspensión es proporcional al tamaño de la memoria.
- La reanudación depende de la disponibilidad de los recursos subyacentes necesarios para reanudar.
¿Qué sigue?
- Para obtener información sobre cómo implementar un margen de seguridad de capacidad, consulta Configura los márgenes de seguridad de capacidad.