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
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,
- 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.
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