DNSChaos Experiment
This document describes how to create DNSChaos experiments in Chaos Mesh.
DNSChaos allows you to simulate fault DNS responses such as a DNS error or a random IP address after a request is sent.
Deploy DNS service for chaos
To create DNSChaos experiments in Chaos Mesh, you need to deploy a DNS service in Chaos Mesh by executing the command below:
When the deployment finishes, check the status of this DNS service:
kubectl get pods -n chaos-testing -l app.kubernetes.io/component=chaos-dns-server
Make sure the Pod's STATUS is Running.
Configuration file
Below is a sample DNSChaos configuration file:
apiVersion: chaos-mesh.org/v1alpha1
kind: DNSChaos
metadata:
name: busybox-dns-chaos
spec:
action: random
patterns:
- google.com
- chaos-mesh.*
- github.?om
mode: all
selector:
namespaces:
- busybox
duration: '90s'
scheduler:
cron: '@every 100s'
For more sample files, see examples. You can edit them as needed.
Fields description
action: Defines the chaos action for DNSChaos. Supported actions are:
error- Get an error when sending the DNS requestrandom- Get a random IP when sending the DNS request
patterns: Choose which domain names to take effect, support the placeholder ? and wildcard *, or the specified domain name.
- The wildcard
_must be at the end of the string. For example,chaos-_.orgis invalid. - If the patterns is empty, will take effect on all the domain names.
- The wildcard
selector: Specifies the target pods for chaos injection. For more details, see Define the Scope of Chaos Experiment.
Notes
Currently, DNSChaos only supports record types
AandAAAA.The chaos DNS service runs CoreDNS with the k8s_dns_chaos plugin. If the CoreDNS service in your Kubernetes cluster contains some special configurations, you can edit configMap
dns-server-configto make the configuration of the chaos DNS service consistent with that of the K8s CoreDNS service as shown below:kubectl edit configmap dns-server-config -n chaos-testing