Aller au contenu principal
Version : 2.6.7

Définir la portée des expériences de chaos

Traduction Bêta Non Officielle

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 définir la portée d'une expérience de chaos, ce qui vous permet de contrôler précisément le rayon d'impact des défaillances.

Vue d'ensemble des portées d'expérience

Dans Chaos Mesh, vous définissez la portée d'une expérience de chaos en spécifiant un sélecteur.

Différents types de sélecteurs correspondent à différentes règles de filtrage. Vous pouvez spécifier un ou plusieurs sélecteurs dans une expérience de chaos pour définir sa portée. Si plusieurs sélecteurs sont spécifiés simultanément, la cible de l'expérience doit satisfaire simultanément les règles de tous les sélecteurs spécifiés.

Lorsque vous créez une expérience de chaos, Chaos Mesh propose les méthodes suivantes pour définir sa portée. Choisissez celle qui correspond à vos besoins :

  • Définir la portée dans un fichier de configuration YAML

  • Définir la portée via le Chaos Dashboard

Définir la portée dans un fichier de configuration YAML

Cette section présente la signification des différents types de sélecteurs, leur utilisation, et fournit des exemples de configuration dans des fichiers YAML. Lorsque vous définissez la portée dans un fichier YAML, vous pouvez spécifier un ou plusieurs sélecteurs selon vos besoins de filtrage.

Sélecteurs de namespace

  • Spécifie le namespace du Pod ciblé par l'expérience.

  • Type de données : tableau de chaînes de caractères.

  • Si ce sélecteur est vide ou non spécifié, Chaos Mesh utilise par défaut le namespace de l'expérience de chaos actuelle.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Sélecteurs de labels

  • Spécifie les labels que le Pod ciblé doit posséder.

  • Type de données : paires clé-valeur.

  • Si plusieurs labels sont spécifiés, la cible doit posséder tous les labels indiqués par ce sélecteur.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Sélecteurs d'expression

  • Spécifie un ensemble d'expressions définissant les règles de labels pour cibler les Pods.

  • Ce sélecteur permet de cibler des Pods ne possédant pas certains labels.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Sélecteurs d'annotations

  • Spécifie les annotations que le Pod ciblé doit posséder.

  • Type de données : paires clé-valeur.

  • Si plusieurs annotations sont spécifiées, la cible doit posséder toutes les annotations indiquées par ce sélecteur.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Sélecteurs de champs

  • Spécifie les champs du Pod ciblé.

  • Type de données : paires clé-valeur.

  • Si plusieurs champs sont spécifiés, la cible doit avoir tous les champs définis par ce sélecteur.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Sélecteurs de phase de Pod

  • Spécifie la phase du Pod ciblé.

  • Type de données : tableau de chaînes de caractères.

  • Phases prises en charge : Pending, Running, Succeeded, Failed, Unknown.

  • Par défaut, cette option est vide, ce qui signifie que la phase du Pod cible n'est pas limitée.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

spec:
selector:
podPhaseSelectors:
- 'Running'

Sélecteurs de nœud

  • Spécifie le label de nœud auquel appartient le Pod cible de l'expérience.

  • Type de données : paires clé-valeur.

  • Si plusieurs labels de nœud sont spécifiés, le nœud auquel appartient le Pod cible doit posséder tous les labels définis par ce sélecteur.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Sélecteur de liste de nœuds

  • Spécifie le nœud auquel appartient le Pod cible de l'expérience.

  • Type de données : tableau de chaînes de caractères.

  • Le Pod cible ne peut appartenir qu'à un seul nœud dans la liste configurée.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

spec:
selector:
nodes:
- node1
- node2

Sélecteur de liste de Pods

  • Spécifie les namespaces et la liste des Pods cibles de l'expérience.

  • Type de données : paires clé-valeur. Les "clés" représentent les namespaces des Pod cibles et les "valeurs" représentent la liste des Pod cibles.

  • Si ce sélecteur est spécifié, Chaos Mesh ignore les autres sélecteurs configurés.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Sélecteur de liste de machines physiques

  • Spécifie les namespaces et la liste des PhysicalMachines cibles de l'expérience.

  • Type de données : paires clé-valeur. Les "clés" représentent les namespaces des PhysicalMachine cibles et les "valeurs" représentent la liste des PhysicalMachine cibles.

  • Si ce sélecteur est spécifié, Chaos Mesh ignore les autres sélecteurs configurés.

note

PhysicalMachine est une CRD (CustomResourcesDefinition) représentant une machine physique. Pour créer un PhysicalMachine, Chaos Mesh utilise Chaosctl.

Lorsque vous créez l'expérience via un fichier YAML, vous devez configurer les sélecteurs. Par exemple :

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

Définir la portée de l'expérience sur Chaos Dashboard

Si vous utilisez Chaos Dashboard pour créer une expérience de chaos, vous pouvez configurer la portée lors de la saisie des informations de l'expérience.

Les sélecteurs suivants sont actuellement disponibles sur Chaos Dashboard. Vous pouvez en spécifier un ou plusieurs selon les besoins de filtrage de la portée :

  • Sélecteurs de namespace

  • Sélecteurs de labels

  • Sélecteurs d'annotations

  • Sélecteurs de phase

Lors de la configuration des sélecteurs, vous pouvez visualiser en temps réel la portée réelle des cibles dans le Dashboard et modifier directement la portée des Pods filtrés par les sélecteurs.

Sélecteurs du tableau de bord
Sélecteurs du tableau de bord

Matrice de compatibilité

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