更改后,如何强制Kubernetes CoreDNS重新加载其配置映射?

时间:2018-11-27 11:14:58

标签: kubernetes coredns

我正在运行Kubernetes 1.11,并尝试配置Kubernetes集群以首先检查本地名称服务器。我阅读了Kubernetes网站上有关自定义CoreDNS的说明,并使用仪表板编辑了CoreDNS的系统ConfigMap。得到的corefile值为:

.: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名称空间中的Deployment,但是我还没有找到有关如何重新加载它或以其他方式响应更改后的配置的文档。

2 个答案:

答案 0 :(得分:4)

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

kubectl rollout restart -n kube-system deployment/coredns

答案 1 :(得分:2)

您可以在命令行中对其进行编辑:

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