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
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.159
fü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.
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.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 und stellen Sie fest, dass sich die Leistungsdaten von Redis während des Stress-Container-Stresstests schnell verschlechtert haben.
Gemischte Szene
Aktualisieren Sie den Knotenpool und konfigurieren Sie das Hybridlabel für den Knoten in der erweiterten Konfiguration:volcano.sh/colocation="true"
Klicken Sie auf die Konfigurationsverwaltung der Knotenpool-Kubelet-Komponentenkonfiguration und aktivieren Sie die Knoten-Colocation-Funktion

Ä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/hostnameVerwenden 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,ZPOPMINGeben 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 .

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