Ingress Controller de Citrix ADC

Escalador automático de pods horizontal para Citrix ADC CPX con métricas personalizadas

Al implementar cargas de trabajo en un clúster de Kubernetes por primera vez, es difícil predecir con exactitud los requisitos de recursos y cómo podrían cambiar esos requisitos en un entorno de producción. Con el escalador automático de pods horizontales (HPA), puede escalar automáticamente la cantidad de pods en su carga de trabajo en función de diferentes métricas, como el uso real de recursos. La HPA es un recurso proporcionado por Kubernetes que escala los recursos basados en Kubernetes, como implementaciones, replicasets y controladores de replicación.

Tradicionalmente, el HPA obtiene las métricas requeridas de un servidor de métricas. A continuación, ajusta periódicamente el número de réplicas en una implementación para que coincida con las métricas promedio observadas con el objetivo que especifique.

HPA-traditional-metric-server

Citrix proporciona una solución HPA personalizada basada en métricas para Citrix ADC CPX. De forma predeterminada, el servidor de métricas solo proporciona métricas de CPU y memoria para un pod. Citrix ADC proporciona un amplio conjunto de métricas integradas para analizar el rendimiento de las aplicaciones y, en función de estas métricas, puede tomar un mejor juicio de escalado automático. Un HPA personalizado basado en métricas es una solución mejor, como el ajuste de escala automático basado en la tasa de solicitudes HTTP, las transacciones SSL o el ancho de banda ADC.

Solución HPA de Citrix ADC CPX

La solución HPA de Citrix ADC CPX consta de los siguientes componentes:

  • Citrix ADC VPX: Citrix ADC VPX o MPX se implementa en el nivel 1 y equilibra la carga de las solicitudes de los clientes entre los pods de Citrix ADC CPX dentro del clúster.

  • Citrix ADC CPX: Citrix ADC CPX implementado dentro del clúster actúa como un equilibrador de carga de nivel 2 para los pods de aplicaciones de punto final. El pod de Citrix ADC CPX se ejecuta junto con el Citrix Ingress Controller y el exportador de métricas de Citrix ADC como sidecars.

  • Citrix Ingress Controller de Citrix: El controlador de entrada de Citrix es un controlador de entrada que se basa en Kubernetes Ingress y configura automáticamente Citrix ADC en función de la configuración de recursos de entrada. El Citrix Ingress Controller implementado como un pod independiente configura Citrix ADC VPX y otras instancias configuran Citrix ADC CPX.

  • Exportador de métricas de Citrix ADC: El [exportador de métricas de Citrix ADC]((https://github.com/citrix/citrix-adc-metrics-exporter)exporta las métricas de rendimiento de la aplicación al sistema de supervisión de código abierto Prometheus. Citrix ADC Metrics Exporter recopila métricas de Citrix ADC CPX y las expone en un formato que Prometheus puede entender.

  • Prometheus: Prometheus es un conjunto de herramientas de supervisión y alerta de sistemas de código abierto. Prometheus se utiliza para recopilar métricas de Citrix ADC CPX y exponerlas mediante un adaptador Prometheus que consulta el controlador HPA para controlar las métricas.

  • Adaptador de Prometheus: el adaptador de Prometheus contiene una implementación de la API de métricas de recursos de Kubernetes y la API de métricas personalizadas. Este adaptador es adecuado para su uso con el escalado automático/HPA v2 en Kubernetes versión 1.6+. También puede reemplazar el servidor de métricas en clústeres que ya ejecutan Prometheus y recopilar las métricas apropiadas.

El siguiente diagrama es una representación visual de cómo funciona la solución Citrix ADC CPX HPA.

Citrix-cpx-hpa-solution

La carga de Citrix ADC VPX de nivel 1 equilibra los CPX de Citrix ADC en el nivel 2. Aplicaciones de equilibrio de carga de Citrix ADC CPX. También se implementan otros componentes como Prometheus, adaptador Prometheus y un controlador HPA.

El controlador HPA sigue sondeando el adaptador Prometheus en busca de métricas personalizadas, como la velocidad de solicitudes HTTP o el ancho de banda. Siempre que se alcanza el límite definido por el usuario en la HPA, el controlador de HPA escala la implementación de Citrix ADC CPX y crea otro pod de Citrix ADC CPX para gestionar la carga.

Implementar la solución HPA de Citrix ADC CPX

Realice los siguientes pasos para implementar la solución HPA de Citrix ADC CPX.

  1. Clona el repositorio citrix-k8s-ingress-controller desde GitHub con el siguiente comando.

    git clone https://github.com/citrix/citrix-k8s-ingress-controller.git
    

    Después de la clonación, cambie el directorio a la carpeta HPA con el siguiente comando.

    cd citrix-k8s-ingress-controller/blob/master/docs/how-to/hpa
    
  2. En el directorio HPA, abra y modifique el archivo values.sh y defina los siguientes valores para Citrix ADC VPX.

    • VPX_IP: dirección IP de Citrix ADC VPX
    • VPX_PASSWORD: La contraseña del nsroot usuario en Citrix ADC VPX
    • VIRTUAL_IP_VPX: la dirección IP desde la que se accede a la aplicación de libro de visitas de muestra.
  3. Cree todos los recursos requeridos ejecutando el archivo create_all.sh.

    ./create_all.sh
    

    Este paso crea los siguientes recursos:

    • Prometheus y Grafana para supervisión
    • Citrix ADC CPX con el Citrix Ingress Controller y el exportador de métricas como sidecars
    • Citrix Ingress Controller como pod independiente para configurar Citrix ADC VPX
    • Una aplicación de libro de visitas de muestra
    • Controlador HPA para supervisar la implementación de escalabilidad automática de Citrix ADC CPX
    • Adaptador Prometheus para exponer las métricas personalizadas
  4. Agregue una entrada en el archivo hosts. La ruta debe agregarse en el archivo hosts para redirigir el tráfico de la aplicación de libro de visitas a la dirección IP virtual de Citrix ADC VPX. Para la mayoría de las distribuciones de Linux, el archivo hosts está presente en la /etc carpeta.

  5. Envíe tráfico generado y verifique la implementación de escalabilidad automática de Citrix ADC CPX.

    La HPA de implementación de Citrix ADC CPX se ha configurado de tal manera que cuando la tasa media de solicitudes HTTP de Citrix ADC CPX supera las 20 solicitudes por segundo, se escala automáticamente. Puede usar los siguientes scripts que se proporcionan en la carpeta HPA para enviar tráfico:

    • 16_curl.sh - Envía 16 solicitudes HTTP por segundo (menos que el umbral)
    • 30_curl.sh - Envía 30 solicitudes HTTP por segundo (mayores que el umbral)

    a. Ejecute el 16_curl.sh script para enviar 16 solicitudes HTTP por segundo a Citrix ADC CPX.

       ./16_curl.sh
    

    El siguiente diagrama es un panel de Grafana que muestra las solicitudes HTTP por segundo. Panel de control de Grafana cuando se envían 16 solicitudes HTTP por segundo

    El siguiente resultado muestra el estado de HPA con 16 RPS HTTP. Estado de HPA con 16 RPS HTTP

    b. Ejecute el 30_curl.sh script para enviar 30 solicitudes HTTP por segundo a Citrix ADC CPX.

       ./30_curl.sh
    

    Al ejecutar este script, se ha superado el umbral de 20 solicitudes que se estableció y la implementación de Citrix ADC CPX se escala automáticamente de un pod a dos pods. El valor promedio de la métrica HTTP request rate también disminuye de 30 a 15, ya que hay dos pods de Citrix ADC CPX.

    El siguiente resultado muestra el estado de la HPA cuando se cruza el objetivo.

    HPA-cpx-exceeding-threshold

    El siguiente resultado muestra que el número de réplicas de Citrix ADC CPX ha aumentado a 2 y el valor medio de HTTP RPS se reduce a 15.

    CPX-autoscale

    El siguiente diagrama muestra un panel de Grafana con dos CPX de Citrix ADC que equilibran la carga del tráfico.

    HPA-grafana-dashboard

  6. Limpiar mediante la ejecución del delete_all.sh script.

    ./delete_all.sh
    

Nota:

Si el Citrix ADC VPX de nivel 1 no está presente, use NodePort para exponer el servicio Citrix ADC CPX.

Escalador automático de pods horizontal para Citrix ADC CPX con métricas personalizadas