Simuler des pannes sur des machines physiques
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 créer des expériences PhysicalMachineChaos (chaos sur machine physique) dans Chaos Mesh pour simuler des pannes réseau, disque, CPU, JVM, horloge et autres sur des machines physiques ou virtuelles.
Introduction à PhysicalMachineChaos
PhysicalMachineChaos permet de simuler des pannes réseau, disque, CPU, JVM, horloge et autres sur des machines physiques ou virtuelles. Avant d'utiliser PhysicalMachineChaos dans Chaos Mesh, vous devez déployer Chaosd sur vos machines physiques ou virtuelles. Le mapping de versions entre Chaos Mesh et Chaosd est le suivant :
| Chaos Mesh version | Chaosd version |
|---|---|
| v2.1.x | v1.1.x |
| v2.2.x | v1.2.x |
Déployer le serveur Chaosd
Avant de créer des expériences PhysicalMachineChaos avec Chaos Mesh, déployez Chaosd en mode serveur sur toutes les machines physiques ou virtuelles devant subir des injections de pannes. Après le déploiement, exécutez le serveur Chaosd comme suit :
-
Déployez Chaosd, générez un certificat TLS et créez
PhysicalMachine:- Pour la méthode de déploiement de Chaosd, consultez Télécharger et déployer Chaosd.
- Après avoir déployé Chaosd, avant de démarrer le serveur Chaosd, générez un certificat TLS et créez une ressource
PhysicalMachinedans les clusters Kubernetes. Pour plus de détails sur la génération des certificats TLS, reportez-vous à Générer des certificats TLS pour Chaosd.
-
Démarrez le serveur Chaosd :
-
Après avoir généré le certificat TLS via Chaosctl, exécutez la commande suivante pour démarrer Chaosd en mode serveur :
chaosd server --https-port 31768 --CA=/etc/chaosd/pki/ca.crt --cert=/etc/chaosd/pki/chaosd.crt --key=/etc/chaosd/pki/chaosd.keynoteLes certificats TLS sont sauvegardés dans le répertoire de sortie par défaut de Chaosctl. Si vous avez spécifié manuellement un autre répertoire lors de la génération des certificats, remplacez le chemin dans la commande par celui correspondant.
-
-
Si le certificat TLS n'a pas été généré via Chaosctl, vous pouvez exécuter cette commande pour démarrer Chaosd en mode serveur. Toutefois, pour la sécurité de vos clusters, cette méthode est déconseillée.
chaosd server --port 31767
Créer des expériences avec Chaos Dashboard
-
Ouvrez Chaos Dashboard, puis cliquez sur NEW EXPERIMENT pour créer une nouvelle expérience :

create a new experiment -
Cliquez sur PHYSIC dans Experiment Type, choisissez un type spécifique comme NETWORK ATTACK. Sélectionnez ensuite un comportement et renseignez les configurations correspondantes :

PhysicalMachineChaos experiment -
Renseignez les informations de l'expérience pour spécifier sa portée et sa durée prévue :

PhysicalMachineChaos experiment information -
Soumettez l'expérience.
Créer des expériences via un fichier YAML
-
Écrivez les configurations expérimentales dans un fichier "physicalmachine.yaml". Exemple :
apiVersion: chaos-mesh.org/v1alpha1
kind: PhysicalMachineChaos
metadata:
name: physical-network-delay
namespace: chaos-mesh
spec:
action: network-delay
mode: one
selector:
namespaces:
- default
labelSelectors:
'arch': 'amd64'
network-delay:
device: ens33
ip-address: 140.82.112.3
latency: 1000ms
duration: '10m'Cette configuration envoie des requêtes HTTP au service Chaosd sur les machines physiques ou virtuelles spécifiées pour déclencher des expériences de latence réseau.
-
Créez l'expérience avec
kubectlvia la commande :kubectl apply -f physicalmachine.yaml
Description des configurations
| Configuration item | Type | Description | Default value | Required | Example |
|---|---|---|---|---|---|
action | string | Defines the actions of physical machines faults, optional values are as follows: stress-cpu, stress-mem, disk-read-payload, disk-write-payload, disk-fill, network-corrupt, network-duplicate, network-loss, network-delay, network-partition, network-dns, process, jvm-exception, jvm-gc, jvm-latency, jvm-return, jvm-stress, jvm-rule-data, clock | None | Yes | stress-cpu |
address | string array | Selects the address of Chaosd service to inject faults, only one of address or selector could be specified | [] | Yes | ["192.168.0.10:31767"] |
selector | struct | Specifies the target PhysicalMachine. For details, refer to Define the experiment scope, only one of address or selector could be specified | None | No | |
mode | string | Specifies the mode of the experiment. The mode options include one (selecting a random PhysicalMachine), all (selecting all eligible PhysicalMachines), fixed (selecting a specified number of eligible PhysicalMachines), fixed-percent (selecting a specified percentage of PhysicalMachines from the eligible PhysicalMachines), and random-max-percent (selecting the maximum percentage of PhysicalMachines from the eligible PhysicalMachines). | None | Yes | one |
value | string | Provides a parameter for the mode configuration, depending on mode. For example, when mode is set to fixed-percent, value specifies the percentage of PhysicalMachines. | None | No | 1 |
duration | string | Specifies the duration of experiments | None | Yes | 30s |
Chaque action de perturbation possède ses propres configurations spécifiques. La section suivante présente les différents types de défauts et leurs méthodes de configuration correspondantes.
Stress CPU
Pour simuler un scénario de stress CPU, définissez l'action sur "stress-cpu". Pour les configurations correspondantes, consultez les paramètres de simulation de stress CPU.
Stress mémoire
Pour simuler un scénario de stress mémoire, définissez l'action sur "stress-mem". Pour les configurations correspondantes, consultez les paramètres de simulation de stress mémoire.
Charge de lecture disque
Pour simuler un scénario de charge de lecture disque, définissez l'action sur "disk-read-payload". Pour les configurations correspondantes, consultez les paramètres de simulation de charge de lecture disque.
Charge d'écriture disque
Pour simuler un scénario de charge d'écriture disque, définissez l'action sur "disk-write-payload". Pour les configurations correspondantes, consultez les paramètres de simulation de charge d'écriture disque.
Remplissage disque
Pour simuler un scénario de remplissage disque, définissez l'action sur "disk-fill". Pour les configurations correspondantes, consultez les paramètres de simulation de remplissage disque.
Corruption réseau
Pour simuler un scénario de corruption réseau, définissez l'action sur "network-corrupt". Pour les configurations correspondantes, consultez les paramètres de simulation de corruption réseau.
Latence réseau
Pour simuler un scénario de latence réseau, définissez l'action sur "network-delay". Pour les configurations correspondantes, consultez les paramètres de simulation de latence réseau.
Duplication réseau
Pour simuler un scénario de duplication réseau, définissez l'action sur "network-duplicate". Pour les configurations correspondantes, consultez les paramètres de simulation de duplication réseau.
Perte réseau
Pour simuler un scénario de perte réseau, définissez l'action sur "network-loss". Pour les configurations correspondantes, consultez les paramètres de simulation de perte réseau.
Partition réseau
Pour simuler un scénario de partition réseau, définissez l'action sur "network-partition". Pour les configurations correspondantes, consultez les paramètres de simulation de partition réseau.
Défaut DNS
Pour simuler un scénario de défaut DNS, définissez l'action sur "network-dns". Pour les configurations correspondantes, consultez les paramètres de simulation de défaut DNS.
Défaut processus
Pour simuler un scénario de défaut processus, définissez l'action sur "process". Pour les configurations correspondantes, consultez les paramètres de simulation de défaut processus.
Levée d'exceptions personnalisées pour applications JVM
Pour simuler un scénario où les applications JVM lèvent des exceptions personnalisées, définissez l'action sur "jvm-exception". Pour les configurations correspondantes, consultez les paramètres de levée d'exceptions personnalisées.
Augmentation de latence de méthode pour applications JVM
Pour simuler un scénario où les applications JVM augmentent la latence des méthodes, définissez l'action sur "jvm-latency". Pour les configurations correspondantes, consultez les paramètres d'augmentation de latence de méthode.
Modification des valeurs de retour pour applications JVM
Pour simuler un scénario où les applications JVM modifient les valeurs de retour des méthodes, définissez l'action sur "jvm-return". Pour les configurations correspondantes, consultez les paramètres de modification des valeurs de retour d'une méthode.
Déclenchement du garbage collection pour applications JVM
Pour simuler un scénario où les applications JVM déclenchent le garbage collection, définissez l'action sur "jvm-gc". Pour les configurations correspondantes, consultez les paramètres de déclenchement du garbage collection.
Déclenchement de perturbations via fichiers de configuration Byteman pour applications JVM
Pour simuler un scénario où des applications JVM déclenchent des fautes à l'aide de fichiers de configuration Byteman, définissez l'action sur "jvm-rule-data". Pour les configurations correspondantes, consultez la section Paramètres pour déclencher des fautes en configurant des fichiers Byteman.
Décalage d'horloge
Pour simuler un scénario de décalage temporel, définissez l'action sur "clock". Pour les configurations correspondantes, consultez la section Paramètres de simulation de décalage d'horloge.