Aller au contenu principal
Version : 2.6.7

Simuler des pannes DNS

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 créer des expériences DNSChaos dans Chaos Mesh pour simuler des défaillances DNS.

info

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

  1. Actuellement, DNSChaos ne prend en charge que les types d'enregistrements A et AAAA.

  2. 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-config pour 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

  1. Ouvrez Chaos Dashboard, puis cliquez sur NOUVELLE EXPÉRIENCE pour créer une nouvelle expérience :

    Créer une expérience
    Créer une expérience

  2. 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
    DNSChaos Experiment

    Selon les règles configurées dans cette capture, la panne DNS s'applique aux domaines google.com, chaos-mesh.org et github.com, ce qui signifie qu'une erreur sera renvoyée pour ces domaines. Pour les détails des règles, reportez-vous au champ patterns dans la Description de configuration.

  3. Complétez les informations de l'expérience, précisez son périmètre et la durée planifiée :

    Experiment Information
    Experiment Information

  4. Soumettez les informations de l'expérience.

Créer des expériences avec un fichier YAML

  1. É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:
    - busybox

    Cette configuration s'applique aux domaines google.com, chaos-mesh.org et github.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 de patterns dans la Description de configuration.

  2. Après avoir préparé le fichier, créez l'expérience avec kubectl :

    kubectl apply -f dnschaos.yaml

Description de configuration

ParameterTypeDescriptionDefault valueRequiredExample
actionstringDefines 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.NoneYesrandom or error
patternsString arraySelects a domain template that matches faults. Placeholder ? and wildcard are supported. *[]Nogoogle.com, chaos-mesh.org, github.com
modestringSpecifies 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).NoneYesone
valuestringProvides parameters for the mode configuration, depending on mode. For example, when mode is set to fixed-percent, value specifies the percentage of Pods.NoneNo1
selectorstructSpecifies the target Pod. For details, refer to Define the Scope of Chaos Experiments.NoneYes
note
  • Les wildcards dans patterns doivent être placés en fin de chaîne. Exemple : chaos-mes*.org. est invalide.

  • Si patterns n'est pas configuré, les pannes s'appliquent à tous les domaines.