Zum Hauptinhalt springen
Version: 2.6.7

Den Umfang von Chaos-Experimenten definieren

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Dieses Dokument erklärt, wie Sie den Umfang eines einzelnen Chaos-Experiments festlegen können, um die Ausbreitung von Fehlern präzise zu kontrollieren.

Überblick zu Experimentumfängen

In Chaos Mesh definieren Sie den Umfang eines Chaos-Experiments durch Angabe eines Selectors.

Verschiedene Selector-Typen entsprechen unterschiedlichen Filterregeln. Sie können einen oder mehrere Selectoren in einem Experiment angeben. Bei mehreren gleichzeitig aktiven Selectoren muss das Zielobjekt alle Regeln aller Selectoren erfüllen.

Bei der Erstellung eines Chaos-Experiments stehen folgende Methoden zur Umfangsdefinition zur Verfügung:

  • Definition des Experimentumfangs in einer YAML-Konfigurationsdatei

  • Definition des Experimentumfangs im Chaos Dashboard

Experimentumfang in einer YAML-Konfigurationsdatei definieren

Dieser Abschnitt erläutert verschiedene Selector-Typen, ihre Funktionen und zeigt Konfigurationsbeispiele in YAML-Dateien. Bei der Umfangsdefinition in YAML können Sie je nach Filteranforderung einen oder mehrere Selectoren angeben.

Namespace-Selectoren

  • Legt den Namespace des Ziel-Pods fest.

  • Datentyp: String-Array.

  • Bei leerer oder fehlender Angabe setzt Chaos Mesh automatisch den Namespace des aktuellen Chaos-Experiments.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
namespaces:
- 'app-ns'

Label-Selectoren

  • Definiert erforderliche Labels für den Ziel-Pod.

  • Datentyp: Schlüssel-Wert-Paare.

  • Bei mehreren Labels muss der Ziel-Pod alle angegebenen Labels besitzen.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
labelSelectors:
'app.kubernetes.io/component': 'tikv'

Expression-Selectoren

  • Definiert Label-Regeln durch Ausdrücke für den Ziel-Pod.

  • Ermöglicht die Auswahl von Pods, die bestimmte Labels nicht erfüllen.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
expressionSelectors:
- { key: tier, operator: In, values: [cache] }
- { key: environment, operator: NotIn, values: [dev] }

Annotation-Selectoren

  • Legt erforderliche Annotations für den Ziel-Pod fest.

  • Datentyp: Schlüssel-Wert-Paare.

  • Bei mehreren Annotations muss der Ziel-Pod alle angegebenen Annotations besitzen.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
annotationSelectors:
'example-annotation': 'group-a'

Feld-Selectoren

  • Spezifiziert Felder des Ziel-Pods.

  • Datentyp: Schlüssel-Wert-Paare.

  • Bei mehreren Feldern müssen alle angegebenen Feldwerte übereinstimmen.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
fieldSelectors:
'metadata.name': 'my-pod'

PodPhase-Selectoren

  • Bestimmt die Lebenszyklus-Phase des Ziel-Pods.

  • Datentyp: String-Array.

  • Unterstützte Phasen: Pending, Running, Succeeded, Failed, Unknown.

  • Diese Option ist standardmäßig leer, was bedeutet, dass die Phase des Ziel-Pods nicht eingeschränkt wird.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
podPhaseSelectors:
- 'Running'

Node-Selektoren

  • Gibt die Node-Labels an, zu denen der Ziel-Pod des Experiments gehört.

  • Datentyp: Schlüssel-Wert-Paare.

  • Bei mehreren Node-Labels muss der Node, zu dem der Ziel-Pod gehört, alle durch diesen Selektor spezifizierten Labels besitzen.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
nodeSelectors:
'node-label': 'label-one'

Node-Listenselektor

  • Gibt den Node an, zu dem der Ziel-Pod des Experiments gehört.

  • Datentyp: String-Array.

  • Der Ziel-Pod kann nur zu einem Node in der konfigurierten Node-Liste gehören.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
nodes:
- node1
- node2

Pod-Listenselektor

  • Gibt die Namespaces und die Liste der Ziel-Pods für das Experiment an.

  • Datentyp: Schlüssel-Wert-Paare. Die "Schlüssel" sind die Namespaces des Ziel-Pod, die "Werte" die Liste der Ziel-Pod.

  • Bei Verwendung dieses Selektors ignoriert Chaos Mesh andere konfigurierte Selektoren.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
pods:
tidb-cluster: # namespace of the target pods
- basic-tidb-0
- basic-pd-0
- basic-tikv-0
- basic-tikv-1

Physical-Machine-Listenselektor

  • Gibt die Namespaces und die Liste der Ziel-PhysicalMachines für das Experiment an.

  • Datentyp: Schlüssel-Wert-Paare. Die "Schlüssel" sind die Namespaces der Ziel-PhysicalMachine, die "Werte" die Liste der Ziel-PhysicalMachine.

  • Bei Verwendung dieses Selektors ignoriert Chaos Mesh andere konfigurierte Selektoren.

Hinweis

PhysicalMachine ist eine CRD (CustomResourcesDefinition), die einen physischen Rechner repräsentiert. Zur Erstellung von PhysicalMachine verwendet Chaos Mesh Chaosctl.

Wenn Sie das Experiment über die YAML-Datei erstellen, müssen Sie die Selektoren konfigurieren. Beispiel:

spec:
selector:
physicalMachines:
default: # namespace of the target PhysicalMachines
- physical-machine-a
- physical-machine-b

Experimentbereich auf Chaos Dashboard definieren

Bei der Erstellung eines Chaos-Experiments über Chaos Dashboard konfigurieren Sie den Experimentbereich während der Eingabe der Experimentinformationen.

Folgende Selektoren stehen aktuell auf Chaos Dashboard zur Verfügung. Sie können je nach Filteranforderung einen oder mehrere Selektoren angeben:

  • Namespace-Selektoren

  • Label-Selektoren

  • Annotation-Selektoren

  • Phasen-Selektoren

Während der Selektor-Konfiguration können Sie den tatsächlichen Zielbereich in Echtzeit im Dashboard einsehen und den durch die Selektoren gefilterten Pod-Bereich direkt anpassen.

Dashboard Selectors
Dashboard Selectors

Kompatibilitätsmatrix

TypeSupport KubernetesSupport physical machine
Namespace SelectorsYesYes
Label SelectorsYesYes
Expression SelectorsYesYes
Annotation SelectorsYesYes
Field SelectorsYesYes
PodPhase SelectorsYesNo
Node SelectorsYesNo
Node List SelectorsYesNo
Pod List SelectorsYesNo
PhysicalMachine List SelectorsNoYes