Testfälle im Cloud-nativen Co-Location-Szenario von CCE

Dieser Artikel wurde von der Huawei Cloud Community geteilt: „ Testen Sie die Auswirkungen des Vorbeugens von Online-Aufgaben, der Unterdrückung von CPU-Ressourcen für Offline-Aufgaben und der Sicherstellung der Servicequalität für Online-Aufgaben im CCE Cloud Native Mixed Deployment Scenario “. Der Autor: Sie können einen Freund finden .

Hintergrund

In Unternehmens-IT-Umgebungen werden normalerweise zwei Haupttypen von Prozessen ausgeführt: zum einen Online-Dienste und zum anderen Offline-Vorgänge.

Online-Aufgaben : Lange Laufzeit, Dienstverkehr und Ressourcennutzung weisen Gezeiteneigenschaften auf, reagieren empfindlich auf Verzögerungen und stellen hohe Service-SLA-Anforderungen, z. B. E-Commerce-Transaktionsdienste usw.

Offline-Aufgaben : Die Laufzeit ist in Intervalle unterteilt, die Ressourcenauslastung während des Betriebs ist hoch, die Verzögerung ist unempfindlich, die Fehlertoleranzrate ist hoch und Unterbrechungen ermöglichen im Allgemeinen eine erneute Ausführung, z. B. bei der Verarbeitung großer Datenmengen usw.

Die Hauptform der Co-Location besteht darin, die Ressourcennutzung durch die Bereitstellung von Online- und Offline-Aufgaben auf demselben Knoten zu verbessern. Beispielsweise stellt ein Knoten zuvor drei Online-Aufgaben mit hohem Service-SLA bereit und stellt jetzt drei Online-Aufgaben und drei Offline-Aufgaben bereit Auf gemischte Weise nutzen Offline-Dienste die ungenutzten Ressourcen von Online-Diensten in verschiedenen Zeiträumen, ohne die Servicequalität von Online-Diensten zu beeinträchtigen.

Auf der Container-Colocation-Ebene geht es hauptsächlich um Folgendes: 1) Auf der Planungsebene werden Knotenplanungsressourcen überplant, und Online- und Offline-Aufgaben werden gemischt und auf demselben Knoten geplant. 2) Auf der CPU-Ebene werden Online-Aufgaben durchgeführt werden vorgezogen und Offline-Aufgaben werden unterdrückt; 3) Der Speicherpegel wird in diesem Artikel nicht vorgestellt. Durch die Leistung der CPU der am gleichen Standort befindlichen Technologie kann realisiert werden, dass das System während des Betriebsprozesses automatisch eine Online-„Vorabbefreiung“ und „Unterdrückung“ von Offline-Aufgabenressourcen entsprechend der Nutzung von Online- und Offline-Aufgabenressourcen durchführt um den Ressourcenbedarf von Online-Ressourcen sicherzustellen. Nehmen Sie als Beispiel eine 4-Kern-Maschine:

  • Wenn eine Online-Aufgabe 3 Kern-CPU-Ressourcen erfordert, muss das System die Offline-Aufgabe „unterdrücken“, um bis zu 1 Kern-CPU-Ressource zu verwenden;
  • Die Online-Aufgabe befand sich zu diesem Zeitpunkt auf dem Tiefpunkt des Geschäfts und verbrauchte nur eine Kern-CPU-Ressource. Die Offline-Aufgabe konnte kurzfristig die verbleibenden CPU-Ressourcen nutzen, und das System sorgte dafür, dass das Online-Geschäft zunahm könnte die CPU-Ressourcen des Offline-Geschäfts „vorwegnehmen“;

Umweltvorbereitung

Umweltanforderungen

Cluster-Version :

  • v1.19-Cluster: v1.19.16-r4 und höher
  • v1.21-Cluster: v1.21.7-r0 und höher
  • v1.23-Cluster: v1.23.5-r0 und höher
  • v1.25 und höher

Clustertyp : CCE-Standard-Cluster oder CCE-Turbo-Cluster.

Knoten-Betriebssystem : EulerOS 2.9 (kernel-4.18.0-147.5.1.6.h729.6.eulerosv2r9.x86_64) oder Huawei Cloud EulerOS 2.0

Knotentyp : elastische virtuelle Maschine.

Volcano-Plug-in-Version : 1.7.0 und höher.

Umweltinformationen

Der CCE-Cluster stellt Kube-Prometheus-Stack-, Grafana- und Volcano-Plug-Ins bereit

Bild.png

Bild.png

Bild.png

Demonstration der CPU-Unterdrückung und Preemption

Stresstest-Basislinie

Erstellen Sie die für die Demonstration erforderliche Arbeitslast und stellen Sie sicher, dass die beiden Arbeitslasten auf demselben Knoten geplant sind (da der allgemeine Ausdruck im Dashboard mit dem Pod-Namen verknüpft ist, wird empfohlen, den Arbeitslastnamen nicht zu verwenden, da er sich sonst auf die Arbeitslast auswirkt normale Anzeige des Dashboards)

Art: Bereitstellung
apiVersion: apps/v1
Metadaten:
  Name: redis        
Spezifikation:
  Nachbildungen: 1
  Wähler:
    matchLabels:
      App: redis
  Vorlage:
    Metadaten:
      Erstellungszeitstempel: null
      Etiketten:
        App: redis
      Anmerkungen:
        prometheus.io/path: /metrics
        prometheus.io/port: '9121'
        prometheus.io/scrape: 'wahr'
    Spezifikation:
      Behälter:
        - Name: Container-1
          Bild: swr.cn-north-4.myhuaweicloud.com/testapp/redis:v6
          Ressourcen:
            Grenzen:
              CPU: '1'
            Anfragen:
              CPU: 250m
        - Name: Container-2
          Bild: bitnami/redis-exporter:latest
          Ressourcen:
            Grenzen:
              CPU: 250m
              Speicher: 512Mi
            Anfragen:
              CPU: 250m
              Speicher: 512Mi
      imagePullSecrets:
        - Name: Standardgeheimnis
      SchedulerName: Vulkan
---
Art: Bereitstellung
apiVersion: apps/v1
Metadaten:
  Name: Stress
Spezifikation:
  Nachbildungen: 1
  Wähler:
    matchLabels:
      App: Stress
  Vorlage:
    Metadaten:
      Etiketten:
        App: Stress
    Spezifikation:
      Behälter:
        - Name: Container-1
          Bild: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1
          Befehl:
            - /bin/bash
          Argumente:
            - '-C'
            - obwohl wahr; hallo hallo; Schlaf 10; Erledigt
          Ressourcen:
            Grenzen:
              CPU: '4'
              Speicher: 4Gi
            Anfragen:
              CPU: 2500m
              Speicher: 1Gi
      imagePullSecrets:
        - Name: Standardgeheimnis
      SchedulerName: Vulkan
      Affinität:
        podAffinität:
          erforderlichDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - Schlüssel: App
                    Betreiber: In
                    Werte:
                      - redis
              Namensräume:
                - Standard
              topologyKey: kubernetes.io/hostname

Verwenden Sie den Befehl redis-benchmark, um Redis einem Stresstest 192.168.1.159für die Pod-IP von Redis zu unterziehen

./redis-benchmark -h 192.168.1.159 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

Beobachten Sie die Redis-Indikatoren und die CPU-Auslastung auf der Grafana-Seite, die ohne Störungen als Basisreferenzdaten verwendet werden können.

Bild.png

Nicht gemischte Szene

Erstellen Sie einen Knotenpool für die Hybridbereitstellung und stellen Sie die oben genannten Arbeitslasten erneut auf neuen Knoten bereit

Verwenden Sie den Befehl redis-benchmark erneut, um Redis einem Stresstest 192.168.1.172für die Pod-IP von Redis zu unterziehen

./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

Geben Sie den Stresscontainer ein, nachdem der Redis-Indikator die Grundlinie erreicht hat und stabil geworden ist, führen Sie den Befehl aus, um die CPU-Auslastung zu erhöhen.

Spannung von -c 4 -t 3600

Beobachten Sie die Redis-Indikatoren und die CPU-Auslastung auf der Grafana-Seite und stellen Sie fest, dass sich die Leistungsdaten von Redis während des Stress-Container-Stresstests schnell verschlechtert haben.

Bild.png

Gemischte Szene

Aktualisieren Sie den Knotenpool und konfigurieren Sie das Hybridlabel für den Knoten in der erweiterten Konfiguration:volcano.sh/colocation="true"

Bild.png

Klicken Sie auf die Konfigurationsverwaltung der Knotenpool-Kubelet-Komponentenkonfiguration und aktivieren Sie die Knoten-Colocation-Funktion

Bild.png

Ändern Sie den Räumungsschwellenwert des Knotens auf 100, um eine direkte Räumung zu vermeiden, wenn die CPU-Auslastung während des Stresstests den Schwellenwert überschreitet.

kubectl kommentiert Knoten 192.168.0.209 vulcan.sh/evicting-cpu-high-watermark=100

Ändern Sie die Anmerkung zur Stress-Workload und markieren Sie Stress als Offline-Geschäft. Die Redis-Workload muss nicht geändert werden.

Art: Bereitstellung
apiVersion: apps/v1
Metadaten:
  Name: Stress
Spezifikation:
  Nachbildungen: 1
  Wähler:
    matchLabels:
      App: Stress
  Vorlage:
    Metadaten:
      Etiketten:
        App: Stress
      Anmerkungen:          
        vulkane.sh/qos-level: „-1“ # Offline-Jobanmerkungen
    Spezifikation:
      Behälter:
        - Name: Container-1
          Bild: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1
          Befehl:
            - /bin/bash
          Argumente:
            - '-C'
            - obwohl wahr; hallo hallo; Schlaf 10; Erledigt
          Ressourcen:
            Grenzen:
              CPU: '4'
              Speicher: 4Gi
            Anfragen:
              CPU: 2500m
              Speicher: 1Gi
      imagePullSecrets:
        - Name: Standardgeheimnis
      SchedulerName: Vulkan
      Affinität:
        podAffinität:
          erforderlichDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - Schlüssel: App
                    Betreiber: In
                    Werte:
                      - redis
              Namensräume:
                - Standard
              topologyKey: kubernetes.io/hostname
Verwenden Sie den Befehl redis-benchmark, um Redis einem Stresstest 192.168.1.172 für die Pod-IP von Redis zu unterziehen
./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN
Geben Sie den Stresscontainer ein, nachdem der Redis-Indikator die Grundlinie erreicht hat und stabil geworden ist, führen Sie den Befehl aus, um die CPU-Auslastung zu erhöhen.
Spannung von -c 4 -t 3600

Beobachten Sie die Redis-Indikatoren und die CPU-Auslastung auf der Grafana-Seite. Selbst wenn die Offline-Aufgaben versuchen, die Knoten-CPU zu erschöpfen, hält das Betriebssystem weiterhin die CPU-Anforderungen der Online-Aufgaben aufrecht und stellt so die Servicequalität der Online-Aufgaben sicher .

Bild.png

 

Klicken Sie hier, um zu folgen und so schnell wie möglich mehr über die neuen Technologien von Huawei Cloud zu erfahren~

 

Ein in den 1990er Jahren geborener Programmierer hat eine Videoportierungssoftware entwickelt und in weniger als einem Jahr über 7 Millionen verdient. Das Ende war sehr bestrafend! High-School-Schüler erstellen im Rahmen einer Coming-of-Age-Zeremonie ihre eigene Open-Source-Programmiersprache – scharfe Kommentare von Internetnutzern: Der inländische Dienst Taobao (taobao.com) verließ sich aufgrund weit verbreiteten Betrugs auf RustDesk und stellte die inländischen Dienste ein und startete die Arbeit zur Optimierung der Webversion von Java neu 17 ist die am häufigsten verwendete Java LTS-Version. Windows 11 erreicht weiterhin einen Rückgang. Open Source Daily unterstützt die Übernahme von Open Source Rabbit R1; Electric schließt die offene Plattform Apple veröffentlicht M4-Chip Google löscht Android Universal Kernel (ACK) Unterstützung für RISC-V-Architektur Yunfeng ist von Alibaba zurückgetreten und plant, in Zukunft unabhängige Spiele auf der Windows-Plattform zu produzieren
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/4526289/blog/11093550
Empfohlen
Rangfolge