Simuler des pannes AWS
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Ce document explique comment utiliser Chaos Mesh pour simuler des pannes AWS.
Introduction à AWSChaos
AWSChaos vous permet de simuler des scénarios de panne sur une instance AWS spécifiée. Actuellement, AWSChaos prend en charge les types de pannes suivants :
-
EC2 Stop : arrête l'instance EC2 spécifiée.
-
EC2 Restart : redémarre l'instance EC2 spécifiée.
-
Detach Volume : démonte le volume de stockage de l'instance EC2 spécifiée.
Fichier Secret
Pour faciliter la connexion au cluster AWS, vous pouvez créer un fichier Kubernetes Secret pour stocker au préalable les informations d'authentification.
Voici un exemple de fichier Secret :
apiVersion: v1
kind: Secret
metadata:
name: cloud-key-secret
namespace: chaos-mesh
type: Opaque
stringData:
aws_access_key_id: your-aws-access-key-id
aws_secret_access_key: your-aws-secret-access-key
aws_session_token: your-aws-session-token
-
name correspond à l'objet Kubernetes Secret.
-
namespace désigne l'espace de noms de l'objet Kubernetes Secret.
-
aws_access_key_id contient l'ID de la clé d'accès au cluster AWS.
-
aws_secret_access_key contient la clé d'accès secrète au cluster AWS.
-
aws_session_token contient le jeton de session AWS pour le cluster. (requis lors de l'utilisation de credentials AWS temporaires)
Créer des expériences avec Chaos Dashboard
Avant de créer une expérience via Chaos Dashboard, assurez-vous que les conditions suivantes sont remplies :
-
Chaos Dashboard est installé.
-
Chaos Dashboard est accessible via
kubectl port-forward:kubectl port-forward -n chaos-mesh svc/chaos-dashboard 2333:2333Vous pouvez ensuite accéder au dashboard via
http://localhost:2333dans votre navigateur.
-
Ouvrez Chaos Dashboard, puis cliquez sur NOUVELLE EXPÉRIENCE pour créer une nouvelle expérience :

img -
Dans la section Choose a Target, sélectionnez AWS FAULT puis un comportement spécifique comme STOP EC2.
-
Renseignez les informations de l'expérience, puis spécifiez sa portée et sa durée planifiée.
-
Soumettez les informations de l'expérience.
Créer des expériences avec un fichier YAML
Exemple de configuration ec2-stop
-
Écrivez la configuration d'expérience dans le fichier
awschaos-ec2-stop.yamlcomme ci-dessous :apiVersion: chaos-mesh.org/v1alpha1
kind: AWSChaos
metadata:
name: ec2-stop-example
namespace: chaos-mesh
spec:
action: ec2-stop
secretName: 'cloud-key-secret'
awsRegion: 'us-east-2'
ec2Instance: 'your-ec2-instance-id'
duration: '5m'Avec cette configuration, Chaos Mesh injectera la panne
ec2-stopsur l'instance EC2 spécifiée, la rendant indisponible pendant 5 minutes.Pour plus d'informations sur l'arrêt d'instances EC2, consultez la documentation AWS - Arrêter et démarrer votre instance.
-
Une fois le fichier préparé, utilisez
kubectlpour créer l'expérience :kubectl apply -f awschaos-ec2-stop.yaml
Exemple de configuration ec2-start
-
Écrivez la configuration de l'expérience dans le fichier
awchaos-ec2-restot.yaml:apiVersion: chaos-mesh.org/v1alpha1
kind: AWSChaos
metadata:
name: ec2-restart-example
namespace: chaos-mesh
spec:
action: ec2-restart
secretName: 'cloud-key-secret'
awsRegion: 'us-east-2'
ec2Instance: 'your-ec2-instance-id'Selon cet exemple de configuration, Chaos Mesh injectera la panique
ec2-restartdans l'instance EC2 spécifiée, entraînant son redémarrage.Pour plus d'informations sur le redémarrage d'instances EC2, consultez la documentation AWS - Redémarrer votre instance.
-
Après avoir préparé le fichier de configuration, utilisez
kubectlpour créer une expérience :kubectl apply -f awschaos-ec2-restart.yaml
Exemple de configuration pour detach-volume
-
Écrivez la configuration de l'expérience dans le fichier
awschaos-detach-volume.yaml:apiVersion: chaos-mesh.org/v1alpha1
kind: AWSChaos
metadata:
name: ec2-detach-volume-example
namespace: chaos-mesh
spec:
action: ec2-stop
secretName: 'cloud-key-secret'
awsRegion: 'us-east-2'
ec2Instance: 'your-ec2-instance-id'
volumeID: 'your-volume-id'
deviceName: '/dev/sdf'
duration: '5m'Selon cet exemple de configuration, Chaos Mesh injectera une panique
detail-volumedans l'instance EC2 spécifiée, provoquant son détachement du volume de stockage indiqué dans un délai de 5 minutes.Pour plus d'informations sur le détachement de volumes Amazon EBS, consultez la documentation AWS - Détacher un volume Amazon EBS d'une instance Linux.
-
Après avoir préparé le fichier de configuration, utilisez
kubectlpour créer une expérience :kubectl apply -f awschaos-detach-volume.yaml
Description des champs
Le tableau suivant décrit les champs du fichier de configuration YAML.
| Parameter | Type | Description | Default value | Required | Example |
|---|---|---|---|---|---|
| action | string | Indicates the specific type of faults. Only ec2-stop, ec2-restore, and detain-volume are supported. | ec2-stop | Yes | ec2-stop |
| mode | string | Specifies the mode of the experiment. The mode options include one (selecting a random Pod), all (selecting all eligible Pods), fixed (selecting a specified number of eligible Pods), fixed-percent (selecting a specified percentage of Pods from the eligible Pods), and random-max-percent (selecting the maximum percentage of Pods from 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 | Specifies the name of the Kubernetes Secret that stores the AWS authentication information. | None | No | cloud-key-secret |
| awsRegion | string | Specifies the AWS region. | None | Yes | us-east-2 |
| ec2Instance | string | Specifies the ID of the EC2 instance. | None | Yes | your-ec2-instance-id |
| volumeID | string | This is a required field when the action is detach-volume. This field specifies the EBS volume ID. | None | No | your-volume-id |
| deviceName | string | This is a required field when the action is detach-volume. This field specifies the machine name. | None | No | /dev/sdf |
| duration | string | Specifies the duration of the experiment. | None | Yes | 30s |