GCP-Fehler simulieren
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
Dieses Dokument beschreibt, wie Sie mit Chaos Mesh Fehler in GCP-Pods injizieren können. Chaos Dashboard und YAML-Dateien werden zur Erstellung von GCPChaos-Experimenten bereitgestellt.
Einführung in GCPChaos
GCPChaos ist ein Fehlertyp in Chaos Mesh. Durch Erstellen eines GCPChaos-Experiments können Sie Fehlerszenarien für die angegebene GCP-Instanz simulieren. Aktuell unterstützt GCPChaos folgende Fehlertypen:
-
Node Stop: Stoppt die angegebene GCP-Instanz.
-
Node Reset: Startet die angegebene GCP-Instanz neu.
-
Disk Loss: Trennt das Speichervolume von der angegebenen GCP-Instanz.
Secret-Datei
Zur einfachen Verbindung mit dem GCP-Cluster können Sie im Voraus eine Kubernetes-Secret-Datei erstellen, um Authentifizierungsinformationen zu speichern.
Nachfolgend finden Sie eine Beispiel-secret-Datei:
apiVersion: v1
kind: Secret
metadata:
name: cloud-key-secret
namespace: chaos-mesh
type: Opaque
stringData:
service_account: your-gcp-service-account-base64-encode
-
name definiert den Namen des Kubernetes-Secrets.
-
namespace definiert den Namespace des Kubernetes-Secrets.
-
service_account speichert den Service-Account-Schlüssel Ihres GCP-Clusters. Denken Sie daran, Ihren GCP-Service-Account-Schlüssel mittels Base64 zu codieren. Weitere Informationen zu Service-Account-Schlüsseln finden Sie unter Erstellen und Verwalten von Service-Account-Schlüsseln.
Experimente mit Chaos Dashboard erstellen
Stellen Sie vor der Experimenterstellung mit Chaos Dashboard folgende Voraussetzungen sicher:
-
Chaos Dashboard ist installiert.
-
Zugriff auf Chaos Dashboard ist via
kubectl port-forwardmöglich:kubectl port-forward -n chaos-mesh svc/chaos-dashboard 2333:2333Anschließend können Sie das Dashboard unter
http://localhost:2333im Browser aufrufen.
-
Öffnen Sie Chaos Dashboard und klicken Sie auf NEW EXPERIMENT, um ein neues Experiment zu erstellen:

img -
Wählen Sie im Bereich Choose a Target die Option GCP fault und ein spezifisches Verhalten wie STOP NODE:

img -
Füllen Sie die Experimentinformationen aus und definieren Sie Experimentumfang sowie geplante Laufzeit:

img 
img -
Übermitteln Sie die Experimentinformationen.
Experimente per YAML-Datei erstellen
Beispielkonfiguration für node-stop
-
Speichern Sie die Experimentkonfiguration in
gcpchaos-node-stop.yaml, wie unten gezeigt:apiVersion: chaos-mesh.org/v1alpha1
kind: GCPChaos
metadata:
name: node-stop-example
namespace: chaos-mesh
spec:
action: node-stop
secretName: 'cloud-key-secret'
project: 'your-project-id'
zone: 'your-zone'
instance: 'your-instance-name'
duration: '5m'Basierend auf dieser Konfiguration injiziert Chaos Mesh den
node-stop-Fehler in die angegebene GCP-Instanz, wodurch diese für 5 Minuten nicht verfügbar ist.Weitere Informationen zum Stoppen von GCP-Instanzen finden Sie unter Stop GCP instance.
-
Nach Vorbereitung der Konfigurationsdatei erstellen Sie das Experiment mit
kubectl:kubectl apply -f gcpchaos-node-stop.yaml
Beispielkonfiguration für node-reset
-
Schreiben Sie die Experimentkonfiguration in die Datei
gcpchaos-node-reset.yaml, wie unten gezeigt:apiVersion: chaos-mesh.org/v1alpha1
kind: GCPChaos
metadata:
name: node-reset-example
namespace: chaos-mesh
spec:
action: node-reset
secretName: 'cloud-key-secret'
project: 'your-project-id'
zone: 'your-zone'
instance: 'your-instance-name'
duration: '5m'Basierend auf diesem Konfigurationsbeispiel injiziert Chaos Mesh den
node-reset-Fehler in die angegebene GCP-Instanz, sodass die GCP-Instanz zurückgesetzt wird.Weitere Informationen zum Zurücksetzen von GCP-Instanzen finden Sie unter Resetting a GCP instance.
-
Nachdem die Konfigurationsdatei vorbereitet ist, verwenden Sie
kubectl, um ein Experiment zu erstellen:kubectl apply -f gcpchaos-node-reset.yaml
Ein disk-loss-Konfigurationsbeispiel
-
Schreiben Sie die Experimentkonfiguration in die Datei
gcpchaos-disk-loss.yaml, wie unten gezeigt:apiVersion: chaos-mesh.org/v1alpha1
kind: GCPChaos
metadata:
name: disk-loss-example
namespace: chaos-mesh
spec:
action: disk-loss
secretName: 'cloud-key-secret'
project: 'your-project-id'
zone: 'your-zone'
instance: 'your-instance-name'
deviceNames: ['disk-name']
duration: '5m'Basierend auf diesem Konfigurationsbeispiel injiziert Chaos Mesh einen
disk-loss-Fehler in die angegebene GCP-Instanz, sodass die GCP-Instanz innerhalb von 5 Minuten vom angegebenen Speichervolume getrennt wird.Weitere Informationen zum Trennen von GCP-Instanzen finden Sie unter Detach GCP storage.
-
Nachdem die Konfigurationsdatei vorbereitet ist, verwenden Sie
kubectl, um ein Experiment zu erstellen:kubectl apply -f gcpchaos-disk-loss.yaml
Feldbeschreibung
Die folgende Tabelle beschreibt die Felder in der YAML-Konfigurationsdatei.
| Parameter | Type | Descpription | Default value | Required | Example |
|---|---|---|---|---|---|
| action | string | Indicates the specific type of faults. The available fault types include node-stop, node-reset, and disk-loss. | node-stop | Yes | node-stop |
| mode | string | Indicates the mode of the experiment. The mode options include one (selecting a Pod at random), all (selecting all eligible Pods), fixed (selecting a specified number of eligible Pods), fixed-percent (selecting a specified percentage of the eligible Pods), and random-max-percent (selecting the maximum percentage of the eligible Pods). | None | Yes | one |
| value | string | Provides parameters for the mode configuration, depending on mode. For example, when mode is set to fixed-percent, value specifies the percentage of pods. | None | No | 1 |
| secretName | string | Indicates the name of the Kubernetes secret that stores the GCP authentication information. | None | No | cloud-key-secret |
| project | string | Indicates the ID of GCP project. | None | Yes | real-testing-project |
| zone | string | Indicates the region of GCP instance. | None | Yes | us-central1-a |
| instance | string | Indicates the name of GCP instance. | None | Yes | gke-xxx-cluster--default-pool-xxx-yyy |
| deviceNames | []string | This is a required field when the action is disk-loss. This field specifies the machine disk ID. | None | no | ["your-disk-id"] |
| duration | string | Indicates the duration of the experiment. | None | Yes | 30s |