Los búferes 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 capacidad activa o en espera en tu clúster. Si declaras capacidad de reserva con anticipación, puedes lograr inicios más rápidos de las cargas de trabajo de una manera rentable.
En este documento, se explica cómo funcionan los búferes de capacidad. Si deseas obtener información para habilitar y usar los búferes de capacidad, consulta Cómo configurar búferes de capacidad.
Cuándo usar un búfer de capacidad
Usa un búfer de capacidad para las aplicaciones que son sensibles a la latencia de inicio y necesitan escalar rápidamente. Cuando experimentas aumentos repentinos en el tráfico, un búfer activo proporciona capacidad aprovisionada previamente que está diseñada para el ajuste de escala de baja latencia. Cuando experimentas un aumento sostenido en el tráfico, un búfer de reserva proporciona programación de Pods a un costo más asequible que el aprovisionamiento previo.
Los búferes de capacidad proporcionan los siguientes beneficios:
- Minimiza la latencia del ajuste de escala: Los búferes activos proporcionan VMs en ejecución, lo que ayuda a minimizar la latencia. Los búferes de reserva se reanudan rápidamente, lo que proporciona una disponibilidad de capacidad más rápida que los nodos nuevos.
- Aprovisionamiento excesivo rentable: Los búferes de capacidad te ayudan a mantener una red de seguridad de tamaño fijo. 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 tu clúster.
- Cumple con los requisitos de la carga de trabajo: Tienes control total sobre el tamaño del búfer de capacidad. Entre las opciones, se incluyen la incorporación de daemonsets o datos personalizados, y el control de la precarga de imágenes y el preinicio de cargas de trabajo para que se adapten a tus necesidades.
Recomendamos los búferes de capacidad para las cargas de trabajo sensibles a la latencia que requieren un aumento rápido de la escala, 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 los períodos de mayor actividad de los jugadores.
No recomendamos los búferes de capacidad para las cargas de trabajo que no son sensibles a la latencia de inicio, como los trabajos de procesamiento por lotes. Para estas cargas de trabajo, el aprovisionamiento excesivo de recursos no proporciona ningún beneficio.
Cómo funcionan los búferes de capacidad
Implementa un búfer de capacidad con un recurso personalizado de CapacityBuffer de Kubernetes para definir un búfer de capacidad libre. El escalador automático del clúster de GKE supervisa los recursos de CapacityBuffer y los trata como demanda pendiente para garantizar que haya capacidad de reserva disponible. Si tu clúster no tiene suficiente capacidad para satisfacer las solicitudes de recursos definidas en el búfer, el escalador automático del clúster aprovisiona nodos adicionales.
Cuando una carga de trabajo de alta prioridad se expande, GKE la programa de inmediato en la capacidad disponible del búfer. Esta programación inmediata se aplica a la cantidad de réplicas o a la cantidad de recursos que se reservan en el búfer, lo que evita la demora típica asociada al aprovisionamiento de nodos. Cuando una carga de trabajo usa una unidad de búfer, el escalador automático del clúster aprovisiona un nodo nuevo para reabastecer el búfer.
Estrategias de búfer de capacidad
Puedes configurar búferes de capacidad con diferentes estrategias de aprovisionamiento según tus requisitos de latencia y costo.
Búfer activo
Un búfer activo proporciona VMs en ejecución para el ajuste de escala de baja latencia de cargas de trabajo que se ajustan a la capacidad reservada. Como los nodos ya están listos, proporcionan una latencia mínima para el consumo inicial del búfer durante un evento de aumento de escala.
Recomendamos esta estrategia para las cargas de trabajo críticas en las que el tiempo de escalamiento vertical es la prioridad más alta.
Búfer de espera
Un búfer de reserva proporciona VMs suspendidas. La estrategia de espera es más rentable que la estrategia activa, pero introduce una pequeña demora para reanudar la VM antes de que acepte cargas de trabajo.
Recomendamos esta estrategia para las cargas de trabajo que pueden tolerar una pequeña demora en el ajuste para optimizar los costos.
CRD de CapacityBuffer
Para configurar un búfer de capacidad, crea un CustomResourceDefinition (CRD) de CapacityBuffer. Puedes configurar el búfer de capacidad para que cumpla con diferentes criterios:
- Réplicas fijas: Especifica una cantidad fija de Pods de búfer. Esta configuración es la forma más sencilla de crear un búfer de un tamaño conocido.
- Basado en porcentaje: 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 búfer se ajusta de forma dinámica a medida que se escala la carga de trabajo de referencia. No puedes definir un búfer basado en porcentajes para las plantillas de Pod, ya que no tienen un campo de réplicas.
- Límites de recursos: Define la cantidad total de CPU y memoria que debe reservar el búfer. El controlador calcula cuántos Pods de búfer se deben crear en función de las solicitudes de recursos de una plantilla de Pod a la que se hace referencia.
Para obtener más información, consulta la documentación de referencia de CRD de CapacityBuffer.
Requisitos y limitaciones
Los búferes de capacidad tienen los siguientes requisitos y limitaciones:
- Los búferes 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 búferes activos, y la versión 1.35.2-gke.1842002 para los búferes en espera.
- Los búferes de capacidad solo admiten cargas de trabajo que usan un modelo de facturación basado en nodos. Los búferes de capacidad no admiten cargas de trabajo que usan el modelo de facturación basado en Pods.
- Te recomendamos que habilites el aprovisionamiento automático de nodos en tus clústeres. 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 aumentará la escala de los grupos de nodos existentes.
Los búferes de reserva tienen las siguientes limitaciones adicionales:
- Solo se admiten en clústeres de Standard.
- No se admiten las VMs con GPU o TPU conectadas.
- Las SSD locales no son compatibles.
- No se admiten los nodos confidenciales de Google Kubernetes Engine.
- Debes conocer las limitaciones relacionadas con las operaciones de suspensión y reanudación de Compute Engine, por ejemplo, los límites de memoria.
¿Qué sigue?
- Para obtener información sobre cómo implementar un búfer de capacidad, consulta Configura búferes de capacidad.