Führen Sie Ihr erstes Chaos-Experiment in 10 Minuten durch
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Chaos Engineering ist eine Methode, um die Robustheit eines Produktivsystems zu testen, indem ungewöhnliche oder störende Bedingungen simuliert werden. Für viele ist jedoch der Übergang vom Lernen des Chaos Engineerings zur praktischen Anwendung auf den eigenen Systemen entmutigend. Es klingt nach einer dieser großen Ideen, für die man ein voll ausgestattetes Team zur Vorbereitung braucht. Nun, das muss nicht sein. Um mit Chaos-Experimenten zu beginnen, fehlt Ihnen vielleicht nur eine geeignete Plattform.
Chaos Mesh ist eine einfach zu bedienende, quelloffene, cloud-native Chaos-Engineering-Plattform, die Chaos in Kubernetes-Umgebungen orchestriert. Dieses 10-minütige Tutorial hilft Ihnen, schnell mit Chaos Engineering zu beginnen und Ihr erstes Chaos-Experiment mit Chaos Mesh durchzuführen.
Weitere Informationen zu Chaos Mesh finden Sie in unserem vorherigen Artikel oder im chaos-mesh-Projekt auf GitHub.
Eine Vorschau auf unser kleines Experiment
Chaos-Experimente ähneln Experimenten aus dem naturwissenschaftlichen Unterricht. Es ist völlig legitim, turbulente Situationen in kontrollierter Umgebung zu simulieren. In diesem Fall werden wir Netzwerk-Chaos in einer kleinen Webanwendung namens web-show simulieren. Um den Chaos-Effekt sichtbar zu machen, zeichnet web-show alle 10 Sekunden die Latenz von seinem Pod zum kube-controller-Pod (im Namespace kube-system) auf.
Der folgende Clip zeigt den Prozess der Installation von Chaos Mesh, der Bereitstellung von web-show und der Erstellung des Chaos-Experiments mit wenigen Befehlen:

Jetzt sind Sie an der Reihe! Zeit, selbst Hand anzulegen.
Los geht's!
Für unser einfaches Experiment verwenden wir Kubernetes in Docker (Kind) für die Kubernetes-Entwicklung. Sie können gerne Minikube oder einen vorhandenen Kubernetes-Cluster nutzen, um mitzumachen.
Bereiten Sie die Umgebung vor
Stellen Sie sicher, dass Sie Git und Docker auf Ihrem lokalen Rechner installiert haben und Docker läuft, bevor Sie fortfahren. Für macOS wird empfohlen, Docker mindestens 6 CPU-Kerne zuzuweisen. Details finden Sie unter Docker-Konfiguration für Mac.
-
Holen Sie sich Chaos Mesh:
git clone https://github.com/chaos-mesh/chaos-mesh.git
cd chaos-mesh/ -
Installieren Sie Chaos Mesh mit dem
install.sh-Skript:./install.sh --local kindinstall.shist ein automatisiertes Shell-Skript, das Ihre Umgebung prüft, Kind installiert, Kubernetes-Cluster lokal startet und Chaos Mesh bereitstellt. Um die detaillierte Beschreibung voninstall.shzu sehen, können Sie die Option--helphinzufügen.Hinweis:
Falls Ihr lokaler Rechner keine Images von
docker.ioodergcr.ioabrufen kann, verwenden Sie den lokalen gcr.io-Mirror und führen Sie./install.sh --local kind --docker-mirroraus. -
Setzen Sie die Systemumgebungsvariable:
source ~/.bash_profile
Hinweis:
Je nach Netzwerk können diese Schritte einige Minuten dauern.
Bei einer Fehlermeldung wie dieser:
ERROR: failed to create cluster: failed to generate kubeadm config content: failed to get kubernetes version from node: failed to get file: command "docker exec --privileged kind-control-plane cat /kind/version" failed with error: exit status 1erhöhen Sie die verfügbaren Ressourcen für Docker auf Ihrem Rechner und führen Sie folgenden Befehl aus:
./install.sh --local kind --force-local-kube
Nach Abschluss des Vorgangs erscheint eine Meldung, dass Chaos Mesh erfolgreich installiert wurde.
Anwendung bereitstellen
Im nächsten Schritt stellen wir die Testanwendung bereit. Hier verwenden wir web-show, da es die direkte Beobachtung von Netzwerkchaos-Effekten ermöglicht. Sie können auch Ihre eigene Anwendung für Tests bereitstellen.
-
Stellen Sie web-show mit dem
deploy.sh-Skript bereit:# Make sure you are in the Chaos Mesh directory
cd examples/web-show &&
./deploy.shHinweis:
Falls Ihr Rechner keine Images von
docker.ioabrufen kann, verwenden Sie denlocal gcr.io-Mirror und führen Sie./deploy.sh --docker-mirroraus. -
Rufen Sie die Web-Show-Anwendung auf. Geben Sie in Ihrem Webbrowser
http://localhost:8081ein.
Chaos-Experiment erstellen
Jetzt ist alles bereit – Zeit für Ihr erstes Chaos-Experiment!
Chaos Mesh verwendet CustomResourceDefinitions (CRD) zur Definition von Chaos-Experimenten. CRD-Objekte sind je nach Szenario unterschiedlich gestaltet, was die Definition stark vereinfacht. Derzeit unterstützt Chaos Mesh CRD-Objekte wie PodChaos, NetworkChaos, IOChaos, TimeChaos und KernelChaos. Weitere Fehlerinjektionstypen folgen.
In diesem Experiment verwenden wir NetworkChaos für das Chaos-Experiment. Die NetworkChaos-Konfigurationsdatei im YAML-Format sieht wie folgt aus:
apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
name: network-delay-example
spec:
action: delay
mode: one
selector:
namespaces:
- default
labelSelectors:
"app": "web-show"
delay:
latency: "10ms"
correlation: "100"
jitter: "0ms"
duration: "30s"
scheduler:
cron: "@every 60s"
Detaillierte Beschreibungen der NetworkChaos-Aktionen finden Sie im Chaos Mesh Wiki. Hier fassen wir die Konfiguration zusammen als:
-
Ziel:
web-show -
Aufgabe: alle
60seine Netzwerkverzögerung von10msinjizieren -
Angriffsdauer: jeweils
30s
So starten Sie NetworkChaos:
-
Führen Sie
network-delay.yamlaus:# Make sure you are in the chaos-mesh/examples/web-show directory
kubectl apply -f network-delay.yaml -
Greifen Sie auf die web-show-Anwendung zu. Öffnen Sie in Ihrem Webbrowser
http://localhost:8081.Im Liniendiagramm erkennen Sie alle 60 Sekunden eine Netzwerkverzögerung von 10 ms.

Herzlichen Glückwunsch! Sie haben soeben erfolgreich Chaos erzeugt. Falls Sie neugierig geworden sind und weitere Experimente mit Chaos Mesh durchführen möchten, sehen Sie sich examples/web-show an.
Chaos-Experiment beenden
Beenden Sie das Chaos-Experiment nach Abschluss Ihrer Tests.
-
Löschen Sie
network-delay.yaml:# Make sure you are in the chaos-mesh/examples/web-show directory
kubectl delete -f network-delay.yaml -
Rufen Sie die Web-Show-Anwendung auf. Geben Sie in Ihrem Webbrowser
http://localhost:8081ein.
Im Liniendiagramm sehen Sie, dass die Netzwerklatenz wieder auf Normalniveau zurückgekehrt ist.

Kubernetes-Cluster löschen
Nach Abschluss des Chaos-Experiments führen Sie diesen Befehl aus, um die Kubernetes-Cluster zu entfernen:
kind delete cluster --name=kind
Hinweis:
Falls der Fehler
kind: command not foundauftritt, führen Sie zuerst den Befehlsource ~/.bash_profileaus und löschen Sie dann die Kubernetes-Cluster.
Großartig! Wie geht's weiter?
Herzlichen Glückwunsch zu Ihrer ersten erfolgreichen Reise ins Chaos Engineering! Wie fühlt es sich an? Chaos Engineering ist doch gar nicht so schwer, oder? Aber vielleicht ist Chaos Mesh noch nicht perfekt - die Kommandozeile ist umständlich, manuelles YAML-Schreiben ist mühsam und die Ergebnisprüfung könnte eleganter sein? Keine Sorge, das Chaos Dashboard ist bereits in Arbeit! Chaos-Experimente per Webinterface klingen doch vielversprechend! Wenn Sie uns bei der Entwicklung von Cloud-Teststandards helfen oder Chaos Mesh verbessern möchten, freuen wir uns über Ihre Mitarbeit!
Falls Sie einen Fehler entdecken oder Verbesserungsvorschläge haben, können Sie gerne ein Issue erstellen, einen Pull Request (PR) öffnen oder uns im #project-chaos-mesh-Kanal des CNCF Slack Workspace kontaktieren.