Escalado de aplicaciones en Kubernetes

Clase 16 de 24Curso de Kubernetes

Resumen

¿Cómo funciona el escalamiento en Kubernetes'

El escalamiento es vital para que una aplicación funcione correctamente en un entorno productivo. Kubernetes ofrece tres opciones principales de escalamiento: escalamiento de pods horizontal, escalamiento de pods vertical y escalamiento de clúster. Cada enfoque tiene beneficios únicos y aplicaciones específicas que lo hacen adecuado para distintas necesidades operativas.

¿Qué es el horizontal pod autoscaler?

El escalamiento horizontal en Kubernetes implica crear múltiples instancias de un pod para gestionar una carga de trabajo creciente. Este enfoque es ideal cuando una aplicación requiere más instancias para manejar un aumento en las solicitudes entrantes.

  • Factores de activación: el sistema puede aumentar el número de pods si detecta que los existentes están cerca de su capacidad máxima, ya sea por CPU o uso de memoria.

  • Configuración: puedes definir umbrales, como el uso del 80% de CPU, para activar nuevos pods. La especificación del Horizontal Pod Autoscaler (HPA) en el archivo YAML incluye estos criterios, permitiendo asignaciones dinámicas de recursos según la demanda.

    apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: mi-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: mi-deployment minReplicas: 1 maxReplicas: 5 metrics:

    • type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80

¿Cómo funciona el vertical pod autoscaler?

El escalamiento vertical permite adaptar un único pod para que disponga de más recursos (CPU, RAM), sin replicar múltiples instancias. Esta opción es beneficiosa cuando se necesitan recursos adicionales en un solo pod para procesar tareas más intensivas sin caer en problemas de rendimiento.

  • Proceso: el pod original es eliminado y reemplazado por uno más potente, lo que aumenta la capacidad para manejar el mismo proceso significativamente.
  • Ventajas: menor impacto en la aplicación cliente, ya que no hay que gestionar múltiples pods, sino adaptar uno solo a las nuevas necesidades de carga.

¿Qué ventajas trae el cluster autoscaler?

El escalamiento del clúster complementa la capacidad de una instalación de Kubernetes para adaptarse tanto a condiciones internas como externas. Al escalar la infraestructura misma, un clúster puede disponer de más nodos tanto maestros como trabajadores cuando se incrementa el tráfico o las demandas de carga de trabajo.

  • Infraestructura flexible: puede agregar más nodos a medida que la demanda crece, lo que elimina cuellos de botella en el clúster.
  • Adaptabilidad: ideal para entornos en la nube, como AWS, GCP y Azure, donde la escalabilidad y los costes pueden equilibrarse de acuerdo a las operaciones requeridas en tiempo real.

¿Cómo configuro métricas para escalamiento?

Nos encontramos con una necesidad esencial: contar con métricas para que los autoscalers (HPA, VPA) tomen decisiones informadas. Kubernetes requiere del metric-server para monitorizar y ofrecer datos actualizados sobre uso de CPU y memoria.

  • Configurar metric-server:

    minikube addons enable metrics-server

  • Ventajas de uso: permite establecer un consumo realista de recursos y ajustar los umbrales con precisión, optimizando la eficiencia del clúster.

Estos tres métodos de escalamiento permiten a developers crear aplicaciones tanto resilientes como eficientes, maximizando su desempeño a medida que se ajustan a demandas cambiantes. Al dominar estas herramientas, emprenderás un camino hacia el dominio de Kubernetes y optimizarás tus despliegues de producción. ¡No esperes más para ponerlas en práctica!