我如何强制 Kubernetes CoreDNS 在更改后重新加载其 Config Map?

How do I force Kubernetes CoreDNS to reload its Config Map after a change?

我是 运行 Kubernetes 1.11,正在尝试配置 Kubernetes 集群以首先检查本地名称服务器。我阅读了 Kubernetes 站点上有关自定义 CoreDNS 的说明,并使用 Dashboard 为 CoreDNS 编辑了系统 ConfigMap。生成的核心文件值为:

.:53 {
    errors
    health
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       upstream    192.168.1.3 209.18.47.61
       fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    proxy . /etc/resolv.conf
    cache 30
    reload
}

您可以将本地地址视为第一个上游名称服务器。我的问题是这似乎没有产生任何影响。我有一个容器 运行 ping & nslookup,它们都不会从本地名称服务器解析名称。

目前我已经通过在一些需要它的 pod 规范中指定名称服务器配置来解决这个问题,但我不喜欢这种解决方法。

如何强制 CoreDNS 根据更改后的 ConfigMap 进行更新?我可以看到它是 kube-system 命名空间中的部署,但我还没有找到任何关于如何让它重新加载或以其他方式响应更改的配置的文档。

您可以在命令行中编辑它:

kubectl edit cm coredns -n kube-system

保存并退出,这应该会重新加载它。

如果它不会重新加载,Emruz Hossain 建议删除 coredns:

kubectl get pods -n kube-system -oname |grep coredns |xargs kubectl delete -n kube-system

应用 Configmap 更改的一种方法是重新部署 CoreDNS pods:

kubectl rollout restart -n kube-system deployment/coredns