Citrix ADC Ingress Controller

Horizontaler Pod-Autoscaler für Citrix ADC CPX mit benutzerdefinierten Metriken

Bei der ersten Bereitstellung von Arbeitslasten in einem Kubernetes-Cluster ist es schwierig, die Ressourcenanforderungen genau vorherzusagen und wie sich diese Anforderungen in einer Produktionsumgebung ändern könnten. Mit dem Horizontal Pod Autoscaler (HPA) können Sie die Anzahl der Pods in Ihrer Arbeitslast automatisch basierend auf verschiedenen Metriken wie dem tatsächlichen Ressourcenverbrauch skalieren. HPA ist eine von Kubernetes bereitgestellte Ressource, die Kubernetes-basierte Ressourcen wie Bereitstellungen, Replikasets und Replikationscontroller skaliert.

Traditionell bezieht HPA die erforderlichen Metriken von einem Metrikserver. Anschließend wird die Anzahl der Replikate in einer Bereitstellung regelmäßig angepasst, um die beobachteten Durchschnittsmetriken mit dem von Ihnen angegebenen Ziel abzugleichen.

HPA-traditional-metric-server

Citrix bietet eine benutzerdefinierte metrikbasierte HPA-Lösung für Citrix ADC CPX. Standardmäßig gibt der Metrikserver nur CPU- und Speichermetriken für einen Pod an. Citrix ADC bietet eine Vielzahl integrierter Metriken zur Analyse der Anwendungsleistung. Auf der Grundlage dieser Metriken können Sie ein besseres Urteil über die automatische Skalierung fällen. Eine benutzerdefinierte metrikbasierte HPA ist eine bessere Lösung wie die automatische Skalierung basierend auf der HTTP-Anforderungsrate, SSL-Transaktionen oder ADC-Bandbreite.

Citrix ADC CPX HPA-Lösung

Die Citrix ADC CPX HPA-Lösung besteht aus folgenden Komponenten:

  • Citrix ADC VPX: Citrix ADC VPX oder MPX wird auf Tier-1 bereitgestellt und gleicht die Clientanforderungen zwischen den Citrix ADC CPX-Pods innerhalb des Clusters aus.

  • Citrix ADC CPX: Citrix ADC CPX, das im Cluster bereitgestellt wird, fungiert als Tier-2-Load Balancer für die Endpunktanwendungs-Pods. Der Citrix ADC CPX-Pod wird zusammen mit dem Citrix Ingress Controller und dem Citrix ADC-Metrik-Exporteur als Seitenwagen ausgeführt.

  • Citrix Ingress Controller: Der Citrix Ingress Controller ist ein Ingress-Controller, der um den Kubernetes Ingress herum aufgebaut ist und Citrix ADC basierend auf der Ingress-Ressourcenkonfiguration automatisch konfiguriert. Der Citrix Ingress Controller, der als eigenständiger Pod bereitgestellt wird, konfiguriert den Citrix ADC VPX und andere Instanzen konfigurieren Citrix ADC CPXs.

  • Citrix ADC Metriken Exporteur: Der Citrix ADC Metriken (Exporteur exportiert die Metriken der Anwendungsleistung in das Open-Source-Überwachungssystem Prometheus. Der Citrix ADC Metrics Exporter sammelt Metriken von Citrix ADC CPX und stellt sie in einem Format zur Verfügung, das Prometheus verstehen kann.

  • Prometheus: Prometheus ist ein Open-Source-Toolkit zur Systemüberwachung und -warnung. Prometheus wird verwendet, um Metriken von Citrix ADC CPXs zu sammeln und sie mithilfe eines Prometheus-Adapters verfügbar zu machen, der vom HPA-Controller abgefragt wird, um die Metriken zu überprüfen.

  • Prometheus-Adapter: Der Prometheus-Adapter enthält eine Implementierung der Kubernetes-Ressourcenmetrik-API und der API für benutzerdefinierte Metriken. Dieser Adapter ist für die Verwendung mit dem Autoscaling/v2 HPA in Kubernetes Version 1.6+ geeignet. Es kann auch den Metrikserver auf Clustern ersetzen, auf denen Prometheus bereits ausgeführt wird, und die entsprechenden Metriken sammeln.

Das folgende Diagramm zeigt visuell, wie die Citrix ADC CPX HPA-Lösung funktioniert.

Citrix-cpx-hpa-solution

Die Tier-1-Citrix ADC VPX-Last gleicht die Citrix ADC CPXs auf Tier-2 aus. Citrix ADC CPX-Anwendungen für den Lastenausgleich. Andere Komponenten wie Prometheus, Prometheus-Adapter und ein HPA-Controller werden ebenfalls eingesetzt.

Der HPA-Controller fragt den Prometheus-Adapter ständig nach benutzerdefinierten Metriken wie HTTP-Anforderungsrate oder Bandbreite ab. Immer wenn das vom Benutzer in der HPA definierte Limit erreicht wird, skaliert der HPA-Controller die Citrix ADC CPX-Bereitstellung und erstellt einen weiteren Citrix ADC CPX-Pod, um die Last zu bewältigen.

Bereitstellung der Citrix ADC CPX HPA-Lösung

Führen Sie die folgenden Schritte aus, um die Citrix ADC CPX HPA-Lösung bereitzustellen.

  1. Klonen Sie das citrix-k8s-ingress-Controller-Repository mit dem folgenden Befehl von GitHub.

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

    Ändern Sie nach dem Klonen Ihr Verzeichnis mit dem folgenden Befehl in den HPA-Ordner.

    cd citrix-k8s-ingress-controller/blob/master/docs/how-to/hpa
    
  2. Öffnen und bearbeiten Sie die values.sh Datei im HPA-Verzeichnis und legen Sie die folgenden Werte für Citrix ADC VPX fest.

    • VPX_IP: IP-Adresse des Citrix ADC VPX
    • VPX_PASSWORD: Das Kennwort des nsroot Benutzers auf dem Citrix ADC VPX
    • VIRTUAL_IP_VPX: Die IP-Adresse, über die auf die Beispiel-Guesbook-Anwendung zugegriffen wird.
  3. Erstellen Sie alle erforderlichen Ressourcen, indem Sie die create_all.sh Datei ausführen.

    ./create_all.sh
    

    In diesem Schritt werden die folgenden Ressourcen erstellt:

    • Prometheus und Grafana für die Überwachung
    • Citrix ADC CPX mit dem Citrix Ingress Controller und Metrik-Exporteur als Sidecars
    • Citrix Ingress Controller als eigenständiger Pod zur Konfiguration von Citrix ADC VPX
    • Eine Beispielanwendung für ein Gästebuch
    • HPA-Controller zur Überwachung der Citrix ADC CPX Autoscale-Bereitstellung
    • Prometheus-Adapter zum Ausstellen der benutzerdefinierten Metriken
  4. Fügt der hosts Datei einen Eintrag hinzu. Die Route muss in der hosts Datei hinzugefügt werden, um den Datenverkehr für die Gästebuchanwendung an die virtuelle IP-Adresse von Citrix ADC VPX weiterzuleiten. Bei den meisten Linux-Distributionen befindet sich die hosts Datei im /etc Ordner.

  5. Senden Sie generierten Datenverkehr und überprüfen Sie die Citrix ADC CPX Autoscale-Bereitstellung.

    Die HPA der Citrix ADC CPX-Bereitstellung wurde so konfiguriert, dass sie automatisch skaliert wird, wenn die durchschnittliche HTTP-Anforderungsrate des Citrix ADC CPX über 20 Anforderungen pro Sekunde liegt. Sie können die folgenden im HPA-Ordner bereitgestellten Skripte zum Senden von Datenverkehr verwenden:

    • 16_curl.sh - 16 HTTP-Anfragen pro Sekunde senden (kleiner als der Schwellenwert)
    • 30_curl.sh - 30 HTTP-Anfragen pro Sekunde senden (über dem Schwellenwert)

    a. Führen Sie das 16_curl.sh Skript aus, um 16 HTTP-Anforderungen pro Sekunde an den Citrix ADC CPX zu senden.

       ./16_curl.sh
    

    Das folgende Diagramm zeigt ein Grafana-Dashboard, das HTTP-Anforderungen pro Sekunde anzeigt. Grafana-Dashboard, wenn 16 HTTP-Anfragen pro Sekunde gesendet werden

    Die folgende Ausgabe zeigt den HPA-Status mit 16 HTTP-RPS. HPA-Status mit 16 HTTP-RPS

    b. Führen Sie das 30_curl.sh Skript aus, um 30 HTTP-Anforderungen pro Sekunde an Citrix ADC CPX zu senden.

       ./30_curl.sh
    

    Wenn Sie dieses Skript ausführen, wurde der festgelegte Schwellenwert von 20 Anforderungen überschritten, und die Citrix ADC CPX-Bereitstellung skaliert automatisch von einem Pod auf zwei Pods. Der Durchschnittswert der Metrik sinkt HTTP request rate ebenfalls von 30 auf 15, da es zwei Citrix ADC CPX-Pods gibt.

    Die folgende Ausgabe zeigt den Zustand von HPA, wenn das Ziel überschritten wird.

    HPA-cpx-exceeding-threshold

    Die folgende Ausgabe zeigt, dass die Anzahl der Replikate von Citrix ADC CPX auf 2 gestiegen ist und der Durchschnittswert von HTTP RPS auf 15 gesunken ist.

    CPX-autoscale

    Das folgende Diagramm zeigt ein Grafana-Dashboard mit zwei Citrix ADC CPXs, die den Datenverkehr ausgleichen.

    HPA-grafana-dashboard

  6. Bereinigen Sie, indem Sie das delete_all.sh Skript ausführen.

    ./delete_all.sh
    

Hinweis:

Wenn der Tier-1-Citrix ADC VPX nicht vorhanden ist, verwenden Sie NodePort, um den Citrix ADC CPX-Dienst verfügbar zu machen.

Horizontaler Pod-Autoscaler für Citrix ADC CPX mit benutzerdefinierten Metriken