Este documento te ayuda a navegar por la documentación de Google Kubernetes Engine (GKE) para encontrar lineamientos y recomendaciones para la optimización de costos. GKE ofrece amplias capacidades de ajuste de escala automático y programación que puedes usar para minimizar el costo del clúster y mantener la estabilidad de la aplicación.
Para obtener una descripción general consolidada de todas las prácticas recomendadas de GKE, consulta Prácticas recomendadas para GKE.Debes tener conocimientos generales sobre los siguientes temas:
Descripción general
Cuando implementas GKE, debes tener en cuenta diferentes aspectos técnicos para alinearte con los requisitos de la aplicación y la empresa. Además de definir los aspectos técnicos de redes, seguridad, almacenamiento y otros, debes evaluar el costo y el rendimiento para satisfacer las necesidades comerciales. En lugar de tratar el costo y el rendimiento como entidades distintas, debes integrarlos desde las etapas iniciales de la planificación de la infraestructura para definir una relación unificada que determine tanto la confiabilidad como la inversión en la nube. Se espera un costo bajo y una alta confiabilidad, pero, a medida que escalas, aumenta la complejidad de administrar esta compensación.
Para lograr un bajo costo y estabilidad de la aplicación, puedes configurar o ajustar las siguientes funciones de GKE:
- Configuración de GKE
- Configuración de las cargas de trabajo
- Visibilidad y valor de referencia de los costos
También puedes descubrir e implementar prácticas recomendadas para optimizar los costos con Compute Advisor (versión preliminar). Para obtener más información, consulta Usa Compute Advisor.
Use GKE Autopilot
Para entornos de desarrollo o de zona de pruebas pequeños, selecciona clústeres de Autopilot. En Autopilot, GKE administra los nodos de forma dinámica y solo se te factura la capacidad de Pod solicitada, lo que te ayuda a evitar los cargos por VM, sistema operativo del nodo y sobrecarga del sistema.
Para obtener más información, consulta la descripción general de GKE Autopilot.
Comprende cómo funciona el ajuste de escala automático
Los controladores de escalado automático de GKE ajustan los recursos de forma dinámica a medida que cambian las solicitudes de tráfico.
Agrega y quita Pods según las métricas de utilización
Un HorizontalPodAutoscaler (HPA) agrega y quita Pods según las métricas de CPU o personalizadas.
Para comprender y configurar el escalado automático horizontal de Pods, consulta la siguiente documentación de GKE:
- Conceptos del escalado automático horizontal de Pods
- Configura el ajuste de escala automático horizontal de Pods
- Visualiza eventos del Horizontal Pod Autoscaler
- Cómo exponer métricas personalizadas de la aplicación para el ajuste de escala automático
Configura un límite de uso objetivo (por ejemplo, el 70% o el 80%) para mantener un búfer que controle los aumentos repentinos de tráfico mientras se inician Pods de réplica adicionales.
Escala tus Pods según las métricas de uso
Usa VerticalPodAutoscaler (VPA) para ajustar de forma dinámica el tamaño de las solicitudes de CPU y memoria de los contenedores para las cargas de trabajo que no emplean el escalado automático horizontal de Pods o cuando se desconocen las cargas de trabajo máximas.
Para comprender y configurar el ajuste de escala automático vertical de Pods, consulta la siguiente documentación de GKE:
- Conceptos del ajuste de escala automático vertical de Pods
- Cómo escalar las solicitudes y los límites de los recursos del contenedor
Mantén el VPA en modo Off (solo recomendaciones) durante al menos 24 horas (idealmente, una semana) en entornos similares a los de producción para capturar patrones de tráfico representativos. Para evitar ajustes erráticos de tamaño, especifica límites mínimos y máximos explícitos en tu objeto VerticalPodAutoscaler antes de habilitar los modos Initial o Auto.
Automatiza el ajuste de escala de la infraestructura con el escalador automático de clústeres
Para escalar los nodos de procesamiento subyacentes en función de la simulación de programación activa en lugar de las cargas de métricas, habilita el escalador automático de clústeres en los grupos de nodos estándar de GKE. Especifica los parámetros mínimos del nodo para admitir la capacidad nocturna básica.
Siempre configura un objeto PodDisruptionBudget (PDB) para los Pods del sistema y de la aplicación. Esta configuración ayuda a garantizar que el escalador automático del clúster no cause interrupciones del servicio de forma inadvertida cuando consolida o reduce la escala de los grupos de nodos subutilizados.
Para comprender y configurar el escalador automático de clústeres, consulta la siguiente documentación de GKE:
- Acerca del clúster de GKE GKE
- Ajuste de escala automático de un clúster
- Cómo ver los eventos del escalador automático de clústeres
Implementa grupos de nodos dinámicos con la creación automática de grupos de nodos
Habilita la creación automática de grupos de nodos para generar automáticamente grupos de nodos de GKE personalizados cuyas formas, recuentos de CPU o límites de memoria se ajusten con precisión a los parámetros de programación de los Pods pendientes. Esta función minimiza los recursos que quedan en los nodos de gran tamaño.
Para comprender y configurar la creación automática de grupos de nodos, consulta la siguiente documentación de GKE:
Lista de tareas de escalado automático
Características de la infraestructura
Alinea el hardware, la ubicación y las reglas de red de los nodos del clúster con las prioridades de optimización de costos.
Selecciona los tipos de máquinas adecuados
Selecciona los tipos de máquinas adecuados para tu clúster según la ubicación de tus usuarios y la ubicación de los datos a los que debe acceder tu clúster.
Para obtener más información, consulta la guía de comparación y recursos de familias de máquinas.
Implementa cargas de trabajo tolerantes a errores en VMs Spot
Usa VMs Spot para ejecutar cargas de trabajo sin estado, tolerantes a errores o por lotes con un descuento de hasta el 91% en comparación con las instancias de VM on demand.
Para obtener más información, consulta la siguiente documentación de GKE:
- Conceptos de las VMs Spot
- Ejecuta cargas de trabajo tolerantes a errores a costos más bajos con VMs Spot
- Ejecuta cargas de trabajo tolerantes a errores a costos más bajos en Spot Pods
Asignar familias de máquinas eficientes y parámetros de configuración del sistema operativo
Personaliza la configuración de las máquinas del grupo de nodos con perfiles de instancias rentables (por ejemplo, arquitecturas de VM E2).
Para obtener más información sobre el dimensionamiento de los nodos, la configuración de los tiempos de interrupción de las VM Spot y la configuración del kernel, consulta Acerca de los grupos de nodos.
Selecciona la región adecuada
Cuando la latencia no afecta a tus usuarios, ejecuta cargas de trabajo de clústeres en regiones de Compute Engine con costos operativos más bajos.
Para obtener más información, consulta Prácticas recomendadas para seleccionar la región de Compute Engine.
Regístrate para obtener un CUD
Compra descuentos por compromiso de uso (CUDs) para garantizar precios con grandes descuentos (hasta un 70%) para los recursos de procesamiento de referencia durante un período de uno o tres años.
Para obtener más información, consulta Descuentos por compromiso de uso basados en recursos.
Considera los costos de redes
Los clústeres de GKE regionales y multizonales mejoran la confiabilidad de las aplicaciones, pero pueden generar costos internos de salida de red entre zonas.
Para minimizar y controlar los costos de redes, considera lo siguiente:
- Transferencias de datos entre zonas: Aunque los clústeres regionales aumentan la disponibilidad distribuyendo las cargas de trabajo entre las zonas, existen costos asociados por los datos transferidos entre estas zonas.
Para obtener más información, consulta Todos los precios de herramientas de redes.
Implementa clústeres de zona única para entornos que no son de producción
En entornos que no son de producción, para evitar cargos de red entre zonas y reducir la sobrecarga de las VM, implementa clústeres de una sola zona en lugar de clústeres regionales o multizonales.
Para obtener más información, consulta Acerca de las opciones de configuración del clúster.
Optimiza las rutas de resolución de DNS del clúster y el tráfico de entrada
Para optimizar la resolución de DNS del clúster y el tráfico de entrada, puedes implementar NodeLocal DNSCache y grupos de extremos de red (NEG).
Cuando ejecutas cargas de trabajo con un uso intensivo del DNS, NodeLocal DNSCache ejecuta un daemon de DNS local en cada nodo. Esta configuración evita que las cargas de consultas altas agoten CoreDNS, lo que evita la necesidad de escalar CoreDNS y reduce los costos generales de GKE.
Para el tráfico de entrada, el balanceo de cargas nativo del contenedor a través de los NEG enruta el tráfico directamente a las direcciones IP de los Pods en lugar de a los grupos de instancias. Este enrutamiento directo facilita la redirección correcta del tráfico durante las acciones de ajuste de escala del Pod.
Para obtener más información, consulta las secciones siguientes:
- Configura NodeLocal DNSCache
- Descripción general del balanceo de cargas nativo del contenedor
- Configura Ingress para balanceadores de cargas de aplicaciones externos
Aplica cuotas de recursos por espacio de nombres
Implementa objetos ResourceQuota de Kubernetes estándar por espacio de nombres en clústeres multiusuario para bloquear los umbrales de forma de CPU y memoria, y evitar que los equipos individuales programen cargas de trabajo no conformes que generen cargos de procesamiento inesperados.
Para obtener más información, consulta Espacios de nombres en la documentación de Kubernetes.
Implementa auditorías de Policy Controller
Implementa Policy Controller para auditar y aplicar de forma dinámica el cumplimiento del clúster con los estándares corporativos. Policy Controller usa el control de admisión para rechazar los recursos mal configurados.
Para obtener más información, consulta lo siguiente:
Controla los manifiestos que no cumplen con los requisitos en las canalizaciones de CI/CD
Valida el cumplimiento de la política de costos en una etapa más temprana del ciclo de vida del desarrollo.
Integra secuencias de comandos de validación (como el análisis de kpt) en las verificaciones previas a la confirmación o de solicitud de extracción para auditar y bloquear los manifiestos que no cumplan con los requisitos antes de que lleguen al clúster.
Para obtener más información, consulta Valida apps en función de las políticas de la empresa en una canalización de CI.
Lista de tareas de infraestructura
Optimización de aplicaciones y cargas de trabajo
Configura tus cargas de trabajo para que usen los recursos de manera eficiente y reducir la sobrecarga operativa.
Especifica solicitudes y límites de memoria que coincidan
Especifica solicitudes precisas de CPU y memoria para los contenedores antes de la implementación. En el caso de la CPU, configura las solicitudes para que cumplan con tus objetivos de nivel de servicio (SLO), pero deja los límites sin restricciones. En el caso de la memoria, asegúrate de que la asignación solicitada coincida con el límite de memoria.
Para obtener más información, consulta Cambia el tamaño de los recursos de CPU y memoria asignados a los contenedores en la documentación de Kubernetes.
Acelerar las horas de inicio de los contenedores
Haz que las imágenes de contenedor sean lo más pequeñas posible para minimizar los tiempos de descarga de imágenes.
Configura PDB
Especifica un objeto PodDisruptionBudget (PDB) para las réplicas de la aplicación para limitar las interrupciones voluntarias y garantizar la estabilidad cuando GKE reduce la escala verticalmente o cuando se producen actualizaciones de nodos.
Para obtener más información, consulta Cómo especificar un presupuesto de interrupción para tu aplicación.
Establece sondeos de preparación y funcionamiento significativos
Configura sondeos de preparación y funcionamiento para todos los contenedores y, así, garantizar que GKE solo enrute el tráfico a los Pods listos y reinicie las instancias con errores, lo que evita la pérdida de tráfico durante el ajuste de escala automático.
Para obtener más información, consulta Configura sondeos de funcionamiento, inicio y preparación.
Configura el cierre ordenado de la aplicación
Prepara los contenedores para una finalización correcta escuchando la señal SIGTERM,
finalizando las solicitudes en curso antes de salir o configurando
hooks de preStop.
Para obtener más información, consulta Finalización y cierre ordenado de VMs interrumpibles.
Implementa reintentos con retirada exponencial
Implementa reintentos de retirada exponencial a nivel de la aplicación o de la malla de servicios para controlar las fallas transitorias o las posibles interrupciones de las VM Spot.
Para obtener más información, consulta Retries en la documentación de Istio.
Lista de tareas para la optimización de aplicaciones y cargas de trabajo
Visibilidad y referencia de costos
Para optimizar los costos, primero debes tener visibilidad de tu inversión en GKE y de cómo se asigna. Esta visibilidad te ayuda a atribuir los costos a los equipos y las unidades de negocios que los generan.
En la siguiente documentación de GKE, se describe cómo establecer una visibilidad profunda de la facturación, el consumo de recursos y las métricas de referencia de GKE.
Habilita la asignación de costos de GKE
Habilita la asignación de costos de GKE para obtener visibilidad de las solicitudes de recursos de la carga de trabajo y los costos asociados. La asignación de costos atribuye los costos del clúster a los espacios de nombres y las etiquetas de Kubernetes de tus cargas de trabajo.
Exporta estos detalles a BigQuery para analizar los datos en la Facturación de Cloud. Usa este análisis para identificar qué cargas de trabajo causan picos de facturación, realizar contracargos y optimizar las solicitudes de recursos.
Para obtener más información, consulta Obtén estadísticas de gastos clave para la asignación de recursos y los costos de los clústeres de GKE.
Revisa los volúmenes de transferencia de registros y métricas
Habilitar Cloud Logging y Cloud Monitoring para tus clústeres genera costos. Los volúmenes altos de transferencia de registros y métricas personalizadas pueden generar cargos inesperados. Audita de forma centralizada qué niveles de registro y métricas personalizadas se transfieren.
Para obtener más información sobre cómo solucionar problemas relacionados con el uso elevado de la API de Logging o los tiempos de espera del límite de escritura de registros, consulta los siguientes recursos:
Supervisa el estado de Metrics Server
Supervisa el estado de la implementación de Metrics Server, ya que los controladores de ajuste de escala automático integrados de GKE dependen de él para recuperar las métricas de CPU y memoria.
Para obtener más información, consulta Soluciona problemas del escalado automático horizontal de Pods.
Fomenta una cultura de ahorro de costos
Proporciona a los desarrolladores acceso a los paneles de inversión en la nube y establece capacitaciones de FinOps para alinear las decisiones de arquitectura con los presupuestos de costos comerciales.
Para obtener más información sobre la cultura de eficiencia en costos de la organización, consulta Cómo difundir la cultura de ahorro de costos.
Lista de tareas para la visibilidad y el valor de referencia de los costos
Usa Compute Advisor
Compute Advisor es una interfaz potenciada por IA en la consola deGoogle Cloud , que cuenta con la tecnología de Gemini y te ayuda a diseñar arquitecturas resilientes y rentables para GKE.
Compute Advisor proporciona orientación sobre la disponibilidad casi en tiempo real para las VMs de inicio flexible y las VMs Spot, y verifica las políticas y las cuotas de recursos de tu organización antes de la implementación. Compute Advisor no proporciona orientación sobre la disponibilidad para las cargas de trabajo que requieren recursos on demand.
Para acceder a Gemini en la consola de Google Cloud , sigue estos pasos:
-
En la consola de Google Cloud , ve a la página Descripción general.
-
En la sección Diseña tu infraestructura con Compute Advisor, envía una instrucción. Gemini comienza a generar una respuesta.
-
Para generar recomendaciones de arquitectura, ejecuta uno de los siguientes ejemplos de instrucciones en Compute Advisor. Cuando haces clic en los botones Ejecutar instrucción en Compute Advisor, la consola de Google Cloud puede tardar más de 15 segundos en cargarse:
Escalado automático y empaquetado en contenedores:
Caso de uso: Para maximizar el empaquetado en contenedores y minimizar la sobrecarga de CPU inactiva, usa esta instrucción para configurar una estrategia para el escalado automático de clúster de GKE y los grupos de nodos.
Configure a GKE cluster to use autoscaler and node pool strategy to maximize bin packing and minimize idle CPU overhead.Administración de multiusuarios:
Caso de uso: Para mantener los espacios de nombres de desarrollo dentro de los límites del presupuesto, usa esta instrucción para redactar una política de ResourceQuota para un clúster de GKE multiusuario.
Draft a ResourceQuota policy for a multi-tenant GKE cluster to keep development namespaces within budget bounds.Optimización de cargas de trabajo:
Caso de uso: Para ayudarte a decidir si usar el modo Autopilot o el modo estándar de GKE para una carga de trabajo por lotes con demandas de recursos variables, usa esta instrucción para obtener una recomendación:
Recommend whether to use GKE Autopilot or Standard mode for a batch processing workload with highly variable resource demands.
¿Qué sigue?
Para obtener más información sobre los principios arquitectónicos y la cultura organizacional necesarios para lograr la eficiencia en los costos, consulta Prácticas recomendadas para ejecutar aplicaciones de Kubernetes con optimización de costos en GKE.