模拟 DNS 故障
DNSChaos 用于模拟错误的 DNS 响应。例如,DNSChaos 可以在接收到 DNS 请求时返回错误,或随机的 IP 地址。
部署 Chaos DNS server
执行以下命令,检查 DNS 服务的状态是否正常:
kubectl get pods -n chaos-mesh -l app.kubernetes.io/component=chaos-dns-server
请确保 Pod 的状态为 Running。
注意事项
-
目前 DNSChaos 只支持 DNS 记录类型
A和AAAA。 -
Chaos DNS 服务运行带有 k8s_dns_chaos 插件的 CoreDNS。如果 Kubernetes 集群本身的 CoreDNS 服务包含一些特殊配置,请执行以下命令编辑 configMap
dns-server-config,使 Chaos DNS 服务配置与 K8s CoreDNS 服务配置一致:kubectl edit configmap dns-server-config -n chaos-mesh
使用 kbcli 模拟故障注入
DNS 故障可分为 random 和 error 两种类型。你可以选择其中一种进行 DNS 故障注入。
--pattern 用于选择与故障匹配的域名模板,是必需的,支持使用占位符 ? 和通配符 *。
DNS random
执行以下命令,向默认命名空间中的所有 Pod 注入 DNS 故障。当发送 DNS 请求到指定的域名时,将返回一个随机的 IP 地 址。
kbcli fault network dns random --patterns=google.com --duration=1m
DNS error
执行以下命令,向默认命名空间中的所有 Pod 注入 DNS 故障。当发送 DNS 请求到指定的域名时,将返回一个错误。
kbcli fault network dns error --patterns=google.com --duration=1m