Description
This plugin implements the Kubernetes DNS-Based Service Discovery Specification.
CoreDNS running with the k8s_dns_chaos plugin can be used to do chaos tests on DNS.
This plugin can only be used once per Server Block.
Syntax
k8s_dns_chaos [ZONES...]
The k8s_dns_chaos supports all options in plugin kubernetes, besides, it also supports other configuration items for chaos.
kubernetes [ZONES...] {
endpoint URL
tls CERT KEY CACERT
kubeconfig KUBECONFIG CONTEXT
namespaces NAMESPACE...
labels EXPRESSION
pods POD-MODE
endpoint_pod_names
ttl TTL
noendpoints
transfer to ADDRESS...
fallthrough [ZONES...]
ignore empty_service
chaos ACTION SCOPE [PODS...]
grpcport PORT
}
Only [ZONES...]
, chaos
and grpcport
is different with plugin with kubernetes:
-
[ZONES...]
defines which zones of the host will be treated as internal hosts in the Kubernetes cluster. -
chaos
ACTION SCOPE [PODS…] set the behavior and scope of chaos.Valid value for Action:
random
: return random IP for DNS request.error
: return error for DNS request.
Valid value for SCOPE:
inner
: chaos only works on the inner host of the Kubernetes cluster.outer
: chaos only works on the outer host of the Kubernetes cluster.all
: chaos works on all the hosts.
[PODS…] defines which Pods will take effect, the format is
Namespace
.PodName
. -
grpcport
PORT sets the port of GRPC service, which is used for the hot update of the chaos rules. The default value is9288
. The interface of the GRPC service is defined in dns.proto.
Examples
All DNS requests in Pod busybox.busybox-0
will get error:
k8s_dns_chaos cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
chaos error all busybox.busybox-0
}
The shell command below will execute failed:
kubectl exec busybox-0 -it -n busybox -- ping -c 1 google.com
ping: bad address 'google.com'