Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
chaoskube — Beendet regelmäßig zufällige Kubernetes-Pods, um zu testen, wie sich Systeme unter beliebigen Pod-Ausfällen verhalten. Unterstützt Filter nach Namespace, Label, Annotation und Zeitplan für kontrollierte Chaos-Experimente. | Kitploit
Tools/GitHubGitHub/linki/chaoskube
Chaos-EngineeringTop in Chaos-Engineering Nr.9
GitHublinki/chaoskube

chaoskube

Beendet regelmäßig zufällige Kubernetes-Pods, um zu testen, wie sich Systeme unter beliebigen Pod-Ausfällen verhalten. Unterstützt Filter nach Namespace, Label, Annotation und Zeitplan für kontrollierte Chaos-Experimente.

Repository anzeigen
1.9k12769vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

chaoskube

GitHub release go-doc

chaoskube beendet regelmäßig zufällige Pods in deinem Kubernetes-Cluster.

chaoskube

Warum

Teste, wie sich dein System unter beliebigen Pod-Ausfällen verhält.

Beispiel

Beim Ausführen wird standardmäßig alle 10 Minuten ein Pod in einem beliebigen Namespace beendet.

$ chaoskube
INFO[0000] starting up              dryRun=true interval=10m0s version=v0.21.0
INFO[0000] connecting to cluster    master="https://kube.you.me" serverVersion=v1.10.5+coreos.0
INFO[0000] setting pod filter       annotations= labels= minimumAge=0s namespaces=
INFO[0000] setting quiet times      daysOfYear="[]" timesOfDay="[]" weekdays="[]"
INFO[0000] setting timezone         location=UTC name=UTC offset=0
INFO[0001] terminating pod          name=kube-dns-v20-6ikos namespace=kube-system
INFO[0601] terminating pod          name=nginx-701339712-u4fr3 namespace=chaoskube
INFO[1201] terminating pod          name=kube-proxy-gke-earthcoin-pool-3-5ee87f80-n72s namespace=kube-system
INFO[1802] terminating pod          name=nginx-701339712-bfh2y namespace=chaoskube
INFO[2402] terminating pod          name=heapster-v1.2.0-1107848163-bhtcw namespace=kube-system
INFO[3003] terminating pod          name=l7-default-backend-v1.0-o2hc9 namespace=kube-system
INFO[3603] terminating pod          name=heapster-v1.2.0-1107848163-jlfcd namespace=kube-system
INFO[4203] terminating pod          name=nginx-701339712-bfh2y namespace=chaoskube
INFO[4804] terminating pod          name=nginx-701339712-51nt8 namespace=chaoskube
...

chaoskube ermöglicht das Filtern der Ziel-Pods nach Namespaces, Labels, Annotationen und Alter sowie das Ausschließen bestimmter Wochentage, Tageszeiten und Tage eines Jahres vom Chaos.

Wie

Helm

Du kannst chaoskube mit Helm installieren. Folge Helms Quickstart-Guide und installiere dann das chaoskube-Chart.

$ helm repo add chaoskube https://linki.github.io/chaoskube/
$ helm install chaoskube chaoskube/chaoskube --atomic --namespace=chaoskube --create-namespace

Siehe chaoskube auf kubeapps.com, um zu erfahren, wie du es konfigurierst und andere nützliche Helm-Charts findest.

Raw-Manifest

Siehe Beispiel-Manifest. Stelle sicher, dass du chaoskube mit der bereitgestellten ClusterRole die entsprechenden Berechtigungen erteilst.

Konfiguration

Standardmäßig ist chaoskube freundlich und beendet nichts. Wenn du deinen Ziel-Cluster validiert hast, kannst du den Dry-Run-Modus deaktivieren, indem du das Flag --no-dry-run übergibst. Du kannst auch ein aggressiveres Intervall und andere unterstützte Flags für deine Bereitstellung angeben.

Wenn du in einem Kubernetes-Cluster läufst und denselben Cluster anvisieren möchtest, ist das alles, was du tun musst.

Wenn du einen anderen Cluster anvisieren oder ihn lokal ausführen möchtest, gib deinen Cluster über das --master-Flag an oder stelle eine gültige kubeconfig über das --kubeconfig-Flag bereit. Standardmäßig wird der Standardpfad der kubeconfig in deinem Home-Verzeichnis verwendet. Das bedeutet, dass der aktuelle Kontext dort anvisiert wird.

Wenn du das Ausmaß des Chaos erhöhen oder verringern möchtest, ändere das Intervall zwischen den Beendigungen mit dem --interval-Flag. Alternativ kannst du die Anzahl der Repliken deiner chaoskube-Bereitstellung erhöhen.

Denke daran, dass chaoskube standardmäßig jeden Pod in all deinen Namespaces beendet, einschließlich System-Pods und sich selbst.

chaoskube stellt einen einfachen HTTP-Endpunkt bereit, mit dem überprüft werden kann, ob es läuft. Dieser kann für Kubernetes-Liveness- und Readiness-Probes verwendet werden. Standardmäßig lauscht dieser auf Port 8080. Zum Deaktivieren übergib --metrics-address="" an chaoskube.

Ziele filtern

Du kannst den Suchraum von chaoskube jedoch einschränken, indem du Label-, Annotation- und Namespace-Selektoren, Pod-Namen-Ein-/Ausschlussmuster sowie eine Mindestalter-Einstellung angibst.

$ chaoskube --labels 'app=mate,chaos,stage!=production'
...
INFO[0000] setting pod filter       labels="app=mate,chaos,stage!=production"

Dies wählt alle Pods aus, deren Label app auf mate gesetzt ist, deren Label chaos auf einen beliebigen Wert gesetzt ist und deren Label stage nicht auf production gesetzt oder nicht gesetzt ist.

Du kannst Ziel-Pods auch nach Namespace-Selektor filtern.

$ chaoskube --namespaces 'default,testing,staging'
...
INFO[0000] setting pod filter       namespaces="default,staging,testing"

Dies filtert nach Pods in den drei Namespaces default, staging und testing.

Namespaces können zusätzlich über einen Namespace-Label-Selektor gefiltert werden.

$ chaoskube --namespace-labels='!integration'
...
INFO[0000] setting pod filter       namespaceLabels="!integration"

Dies schließt alle Pods aus Namespaces mit dem Label integration aus.

Du kannst Ziel-Pods nach dem Kind-Selektor der OwnerReference filtern.

$ chaoskube --kinds '!DaemonSet,!StatefulSet'
...
INFO[0000] setting pod filter       kinds="!DaemonSet,!StatefulSet"

Dies schließt alle DaemonSet- und StatefulSet-Pods aus.

$ chaoskube --kinds 'DaemonSet'
...
INFO[0000] setting pod filter       kinds="DaemonSet"

Dies schließt nur DaemonSet-Pods ein.

Bitte beachte: Jeder include-Filter schließt automatisch alle Pods ohne definierte OwnerReference aus.

Du kannst Pods nach Namen filtern:

$ chaoskube --included-pod-names 'foo|bar' --excluded-pod-names 'prod'
...
INFO[0000] setting pod filter       excludedPodNames=prod includedPodNames="foo|bar"

Dadurch werden nur Pods anvisiert, deren Name 'foo' oder 'bar' enthält und nicht 'prod' enthält.

Du kannst auch Namespaces ausschließen und sie mit den Label- und Annotation-Selektoren kombinieren.

$ chaoskube \
    --labels 'app=mate,chaos,stage!=production' \
    --annotations '!scheduler.alpha.kubernetes.io/critical-pod' \
    --namespaces '!kube-system,!production'
...
INFO[0000] setting pod filter       annotations="!scheduler.alpha.kubernetes.io/critical-pod" labels="app=mate,chaos,stage!=production" namespaces="!kube-system,!production"

Dies schränkt den Suchraum des obigen Label-Selektors weiter ein, indem auch alle Pods in den Namespaces kube-system und production ausgeschlossen sowie alle Pods ignoriert werden, die als kritisch markiert sind.

Der Annotation-Selektor kann auch verwendet werden, um chaoskube als Cluster-Addon auszuführen und Pods nach Belieben zu erlauben, sich für die Beendigung zu entscheiden. Du könntest chaoskube zum Beispiel so ausführen:

$ chaoskube --annotations 'chaos.alpha.kubernetes.io/enabled=true' --debug
...
INFO[0000] setting pod filter       annotations="chaos.alpha.kubernetes.io/enabled=true"
DEBU[0000] found candidates         count=0
DEBU[0000] no victim found
Tool herunterladen