k8s_dns_chaos

源代码 主页

使用以下内容启用
k8s_dns_chaos:github.com/chaos-mesh/k8s_dns_chaos

k8s_dns_chaos - 用于在 Kubernetes 集群中注入 DNS 异常,以用于混沌工程。

描述

此插件实现 Kubernetes 基于 DNS 的服务发现规范

运行 k8s_dns_chaos 插件的 CoreDNS 可用于对 DNS 执行混沌测试。

每个服务器块只能使用此插件一次。

语法

k8s_dns_chaos [ZONES...]

k8s_dns_chaos 支持插件 kubernetes 中的所有选项,此外,还支持用于混沌的其他配置项。

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
}

只有 [ZONES...]chaosgrpcport 与使用 kubernetes 的插件不同

  • [ZONES...] 定义主机的哪些区域将在 Kubernetes 集群中被视为内部主机。

  • chaos 动作 作用域 [PODS…] 设置混沌的行为和作用域。

    动作 的有效值

    • random:为 DNS 请求返回随机 IP。
    • error:为 DNS 请求返回错误。

    范围 的有效值

    • inner:混沌只在 Kubernetes 集群的内部主机上起作用。
    • outer:混沌只在 Kubernetes 集群的外部主机上起作用。
    • all:混沌在所有主机上起作用。

    [PODS…] 定义哪些 Pod 将生效,格式为 命名空间.Pod 名称

  • grpcport 端口 设置 GRPC 服务的端口,用于混沌规则的热更新。默认值为 9288。GRPC 服务的接口在 dns.proto 中定义。

示例

Pod busybox.busybox-0 中的所有 DNS 请求都会出错

    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
    }

以下 shell 命令将执行失败

    kubectl exec busybox-0 -it -n busybox -- ping -c 1 google.com
    ping: bad address 'google.com'