Background Image
TECNOLOGÍA

KEDA: el estándar de oro para el autoescalado de Kubernetes

Mark Soule Headshot
Mark Soule
Consultor principal

June 19, 2024 | 5 Minuto(s) de lectura

A medida que los costes de la nube siguen aumentando, las empresas se ven obligadas a utilizar sus recursos en la nube de forma más eficiente. Kubernetes Event-Driven Autoscaling (KEDA) es una solución que ofrece optimización con precisión. Como proyecto graduado de la Cloud Native Computing Foundation (CNCF), la arquitectura basada en eventos de KEDA resulta eficaz para cargas de trabajo que no se ajustan a las métricas típicas de CPU y memoria. Integra a la perfección una amplia gama de fuentes de eventos y brokers con Kubernetes. Además, KEDA tiene la capacidad única de autoescalar a cero. En comparación con herramientas de terceros, KEDA destaca por su madurez e integridad sin precedentes y es un estándar de oro para el autoescalado de Kubernetes.

Kubernetes Horizontal Pod Autoscaler (HPA) solo admite escalado basado en el uso de CPU y memoria a nivel de contenedor. Esto no es adecuado para muchos casos de uso. Por ejemplo, los consumidores de Kafka normalmente quieren escalar basándose en el retardo de eventos, una métrica no soportada por HPA. Existen adaptadores de terceros que pueden integrar métricas externas de Kubernetes con algún backend de métricas. Esto es así:

Asset - KEDA1

Las HPA obtienen datos del módulo de métricas externas de Kubernetes. Este módulo no almacena métricas, simplemente las obtiene de backends de métricas, pero no admite de forma nativa la consulta de backends de métricas. Necesita un adaptador que pueda obtener y convertir métricas. El usuario debe instalar y configurar ese adaptador. Por ejemplo, Prometheus Adapter puede extraer métricas de Prometheus y convertirlas para su uso por Kubernetes External Metrics. El escalado basado en eventos de KEDA consolida todo esto en una única instalación:

Asset - KEDA2

La arquitectura de KEDA consta de dos componentes principales: el operador y el servidor de métricas. El Operator dicta cómo deben escalarse las aplicaciones en respuesta a los eventos a través de los ScaledObjects personalizados de KEDA que se adjuntan a las implantaciones. El servidor de métricas actúa como puente entre Kubernetes y las fuentes de eventos externas. Estos componentes trabajan conjuntamente para captar eventos métricos de cualquier número de fuentes y utilizarlos para activar automáticamente el escalado en función de dichos eventos. Este diseño permite a KEDA escalar dinámicamente las cargas de trabajo de Kubernetes en función de los eventos procedentes de una amplia gama de fuentes.

La capacidad de integrarse con una amplia gama de fuentes y agentes de eventos es un testimonio de la versatilidad de KEDA como solución de autoescalado. Su amplio soporte incluye sistemas populares como Kafka, RabbitMQ y fuentes de eventos basadas en la nube, lo que convierte a KEDA en una herramienta integral para desarrolladores que trabajan en un ecosistema tecnológico diverso. Para ilustrar esto, comparemos la configuración de Kafka consumer lag autoscaling en KEDA frente al enfoque de "adaptador".

La configuración de KEDA para el autoescalado de Kafka consumer lag implica la creación de un ScaledObject en Kubernetes orientado a la implementación de Kafka consumer.

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: demo-kafka-scaledobject
spec:
  scaleTargetRef:
    name: demo
  pollingInterval: 60
  cooldownPeriod: 300
  minReplicaCount: 0
  maxReplicaCount: 10
  triggers:
    - type: kafka
      metadata:
        consumerGroup: demo.consumer-group.id
        bootstrapServersFromEnv: KAFKA_BOOTSTRAP_SERVERS
        # Lag must be higher than this to activate scaling
        activationLagThreshold: 3000
        # desiredReplicas = totalLag / lagThreshold
        lagThreshold: 1000
        sasl: plaintext
        tls: enable
      authenticationRef:
        name: keda-kafka-credentials
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: keda-kafka-credentials
spec:
  secretTargetRef:
    - parameter: username
      name: demo-kafka-secrets
      key: demo.username
    - parameter: password
      name: demo-kafka-secrets
      key: demo.password

Se especificará Kafka como tipo de activador en el ScaledObject y se incluirán detalles como los servidores de arranque de Kafka, el grupo de consumidores y el tema. Además, definirá el umbral de retraso que activa el escalado. La autenticación en Kafka se puede gestionar mediante un objeto TriggerAuthentication, que hace referencia a los secretos de Kubernetes para los parámetros de conexión segura. Esta configuración permite a KEDA supervisar el retraso del consumidor de Kafka y escalar dinámicamente la implantación en función de los criterios definidos.

La configuración de Prometheus Adapter para el escalado automático del retraso del consumidor de Kafka requiere configurar Prometheus para recopilar métricas de Kafka y, a continuación, utilizar Prometheus Adapter para exponer estas métricas a Horizontal Pod Autoscaler (HPA) de Kubernetes. Deberá:

  • Configurar Prometheus para raspar las métricas de Kafka, incluido el retraso del consumidor.

  • Instalar Prometheus Adapter en su clúster de Kubernetes, asegurándose de que está configurado para consultar a Prometheus las métricas específicas de retraso de Kafka.

  • Cree un objeto HPA que se dirija a su implementación de consumidor, especificando la métrica de retraso de Kafka de Prometheus como base para las decisiones de escalado.

Esta configuración permite al HPA escalar sus consumidores Kafka basándose en el retardo, asegurando un procesamiento eficiente de los mensajes. Sin embargo, obliga al usuario a mantener una cadena de componentes separados, cada uno desplegado por separado. Si el backend de métricas cambia alguna vez, es necesario modificar toda la cadena. Por el contrario, KEDA reduce el número de componentes, ya que el único despliegue de KEDA puede reutilizarse para cualquier número de backends. Además, los objetos de autoescalado de KEDA están desacoplados de los backends de los que obtiene métricas. Esto garantiza que KEDA se pueda adoptar sin problemas en diversos escenarios, sirviendo como una solución todo en uno para el escalado basado en eventos. Esta adaptabilidad aumenta el atractivo de KEDA y lo convierte en una herramienta fundamental en las estrategias modernas de despliegue y gestión de aplicaciones.

Una de las características más destacadas de KEDA es su capacidad para escalar cargas de trabajo hasta cero, una capacidad que lo diferencia de las soluciones de autoescalado tradicionales. Esta funcionalidad significa que cuando no hay demanda o la carga de trabajo basada en eventos está inactiva, KEDA puede reducir el número de pods a cero, pausando de forma efectiva el uso de recursos. De este modo se optimiza la utilización de los recursos y se reducen los costes asociados a la potencia de cálculo ociosa. Al alinear el consumo de recursos con la demanda real, KEDA garantiza que la eficiencia y la rentabilidad estén en primer plano.

El hecho de que KEDA sea un proyecto graduado de la Cloud Native Computing Foundation (CNCF) aumenta aún más su atractivo. Esta graduación significa un nivel de estabilidad, madurez y confianza de la comunidad que pocos proyectos alcanzan. Indica que KEDA ha cumplido rigurosos criterios de gobernanza, compromiso con la comunidad y adopción del ecosistema. El respaldo del CNCF a KEDA subraya su compromiso con la innovación y su dedicación a mantener una solución que satisfaga las necesidades cambiantes de sus usuarios.

KEDA representa un nuevo patrón en el escalado automático de Kubernetes, ya que aborda con habilidad la naturaleza dinámica de las arquitecturas modernas basadas en eventos. Su escalado basado en eventos, su amplia compatibilidad con diversas fuentes de eventos, su capacidad para escalar cargas de trabajo a cero y su reconocimiento como proyecto graduado por la CNCF ponen de manifiesto sus inigualables capacidades. Estas características no sólo ponen de relieve la excelencia técnica de KEDA, sino también su papel en el fomento de un despliegue de aplicaciones rentable, eficiente y fiable. A través de su innovación y evolución respaldada por la comunidad, KEDA destaca claramente como el estándar de oro para el autoescalado de Kubernetes, encarnando el futuro de las aplicaciones nativas de la nube escalables y con capacidad de respuesta.

Tecnología

Reflexiones más recientes

Explore las entradas de nuestro blog e inspírese con los líderes de opinión de todas nuestras empresas.
Asset - Image 1 Data Storage in a Concurrent World 
DATOS

Data Storage in a Concurrent World 

Data storage and event ordering in concurrent systems can spark challenges, but there are ways to be prepared.