Simuler des pannes DNS
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 DNSChaos dans Chaos Mesh pour simuler des défaillances DNS.
Pour simuler des pannes DNS, vous devez déployer un service DNS spécial appelé Chaos DNS Server.
À partir de la v2.6, Chaos Mesh déploie Chaos DNS Server par défaut. Si vous n'avez pas besoin de simuler des pannes DNS, vous pouvez configurer dnsServer.create sur false lors de l'installation de Chaos Mesh :
Présentation de DNSChaos
DNSChaos simule des réponses DNS incorrectes. Par exemple, il peut renvoyer une erreur ou une adresse IP aléatoire lorsqu'il reçoit une requête DNS.
Vérifier le déploiement de Chaos DNS Server
Vérifiez si Chaos DNS Server est déployé en exécutant la commande suivante :
kubectl get pods -n chaos-mesh -l app.kubernetes.io/component=chaos-dns-server
Assurez-vous que le statut du Pod est Running.
Notes importantes
-
Actuellement, DNSChaos ne prend en charge que les types d'enregistrements
AetAAAA. -
Le service DNS chaotique utilise CoreDNS avec le plugin k8s_dns_chaos. Si votre cluster Kubernetes contient des configurations CoreDNS spécifiques, vous pouvez éditer le ConfigMap
dns-server-configpour aligner la configuration du service DNS chaotique avec celle de CoreDNS K8s :kubectl edit configmap dns-server-config -n chaos-mesh
Créer des expériences avec Chaos Dashboard
-
Ouvrez Chaos Dashboard, puis cliquez sur NOUVELLE EXPÉRIENCE pour créer une nouvelle expérience :

Créer une expérience -
Dans la section Choisir une cible, sélectionnez PANNE DNS et choisissez un comportement spécifique (par exemple ERREUR). Remplissez ensuite les règles de correspondance :

DNSChaos Experiment Selon les règles configurées dans cette capture, la panne DNS s'applique aux domaines
google.com,chaos-mesh.orgetgithub.com, ce qui signifie qu'une erreur sera renvoyée pour ces domaines. Pour les détails des règles, reportez-vous au champpatternsdans la Description de configuration. -
Complétez les informations de l'expérience, précisez son périmètre et la durée planifiée :

Experiment Information -
Soumettez les informations de l'expérience.
Créer des expériences avec un fichier YAML
-
Écrivez la configuration dans le fichier
dnschaos.yaml:apiVersion: chaos-mesh.org/v1alpha1
kind: DNSChaos
metadata:
name: dns-chaos-example
namespace: chaos-mesh
spec:
action: random
mode: all
patterns:
- google.com
- chaos-mesh.*
- github.?om
selector:
namespaces:
- busyboxCette configuration s'applique aux domaines
google.com,chaos-mesh.orgetgithub.com, ce qui signifie qu'une adresse IP aléatoire sera renvoyée pour ces domaines. Pour les règles détaillées, consultez la description depatternsdans la Description de configuration. -
Après avoir préparé le fichier, créez l'expérience avec
kubectl:kubectl apply -f dnschaos.yaml
Description de configuration
| Parameter | Type | Description | Default value | Required | Example |
|---|---|---|---|---|---|
action | string | Defines the behavior of DNS fault. Optional values: random or error. When the value is random, DNS service returns a random IP address; when the value is error, DNS service returns an error. | None | Yes | random or error |
patterns | String array | Selects a domain template that matches faults. Placeholder ? and wildcard are supported. * | [] | No | google.com, chaos-mesh.org, github.com |
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 |
selector | struct | Specifies the target Pod. For details, refer to Define the Scope of Chaos Experiments. | None | Yes |
-
Les wildcards dans
patternsdoivent être placés en fin de chaîne. Exemple :chaos-mes*.org.est invalide. -
Si
patternsn'est pas configuré, les pannes s'appliquent à tous les domaines.