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
Below is a sample DNSChaos configuration file:
cron: '@every 100s'
For more sample files, see examples. You can edit them as needed.
- action: Defines the chaos action for DNSChaos. Supported actions are:
error- Get an error when sending the DNS request
random- Get a random IP when sending the DNS request
scope: Defines the scope of the DNSChaos. Supported scopes are:
outer- DNSChaos only works on outer hosts of the Kubernetes cluster
inner- DNSChaos only works on inner hosts of the Kubernetes cluster
all- DNSChaos works on all hosts.
selector: Specifies the target pods for chaos injection. For more details, see Define the Scope of Chaos Experiment.
Currently, DNSChaos only supports record types
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