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 administrar de forma proactiva la capacidad de reserva en tu clúster. Si reservas capacidad de reserva con anticipación, te aseguras de que los nodos tengan capacidad disponible cuando sea necesario, lo que reduce el tiempo que lleva programar Pods nuevos durante los eventos de escalamiento.
En este documento, se explica cómo funcionan los búferes de capacidad. Para obtener información sobre cómo habilitar y usar los búferes de capacidad, consulta Configura los 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 que necesitan escalarse rápidamente. Cuando experimentas aumentos repentinos en el tráfico, un búfer de capacidad proporciona capacidad aprovisionada previamente.
Los búferes de capacidad proporcionan los siguientes beneficios:
- Minimiza la latencia de escalamiento: Cuando usas búferes de capacidad, las cargas de trabajo críticas se colocan en nodos aprovisionados previamente de inmediato. Los búferes de capacidad ayudan a eliminar la demora asociada con el inicio de la VM y la extracción de imágenes, lo que te ayuda a mantener objetivos de nivel de servicio (SLOs) estrictos durante los picos de tráfico.
- 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 el clúster.
- Cumple con los requisitos de la carga de trabajo: Tienes control total sobre el tamaño del búfer de capacidad. Las opciones incluyen incorporar daemonsets o datos personalizados, y controlar la carga previa de imágenes y el inicio previo de la carga de trabajo.
Recomendamos los búferes de capacidad para las cargas de trabajo sensibles a la latencia que requieren un escalamiento vertical rápido, como 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.
No recomendamos los búferes de capacidad para las cargas de trabajo que no son sensibles a la latencia de inicio, por ejemplo, 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
Para implementar un búfer de capacidad, usa un recurso personalizado de CapacityBuffer de Kubernetes para definir un búfer de capacidad de reserva. El escalador automático del clúster de GKE supervisa los recursos de CapacityBuffer y los trata como demanda pendiente para garantizar que la capacidad de reserva esté 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 escala verticalmente, GKE la programa de inmediato en la capacidad disponible en el 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 con el 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 volver a llenar el búfer.
Un búfer activo proporciona VMs en ejecución para el escalamiento de baja latencia de las cargas de trabajo que se ajustan a la capacidad reservada. Debido a que los nodos ya están listos, proporcionan la latencia más baja posible para el consumo inicial del búfer durante un evento de escalamiento vertical.
CapacityBuffer CRD
Para configurar un búfer de capacidad, crea una CapacityBuffer CustomResourceDefinition (CRD). 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 porcentajes: Define el tamaño del búfer como un porcentaje de una carga de trabajo escalable existente, como una Deployment. El tamaño del búfer se ajusta de forma dinámica mientras se escala la carga de trabajo de referencia.
- 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 de referencia.
Para obtener más información, consulta la documentación de referencia de CapacityBuffer CRD.
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.
- 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 escala verticalmente los grupos de nodos existentes.
¿Qué sigue?
- Para obtener información sobre cómo implementar un búfer de capacidad, consulta Configura los búferes de capacidad.