外部DNS服务器是否可以针对K8s群集DNS进行解析?我希望驻留在群集之外的应用程序能够解析容器DNS名称?
我从来没有这样做过,但从技术上讲,这应该可以通过将kube-dns服务公开为NodePort来实现。然后,您应配置外部DNS服务器以将Kube DNS区域“cluster.local”(或您在Kube中拥有的任何其他内容)的查询转发到kube-dns地址和端口。
在Bind中可以这样做:
zone "cluster.local" {
type forward;
forward only;
forwarders{ ANY_NODE_IP port NODEPORT_PORT; };
};
虽然有可能暴露coredns并因此将请求转发给kubernetes,但我在aws中采用的典型方法是使用external-dns controller。
这将使服务和入口同步,提供类似的功能。它附带了一些警告,但我已经在prod环境中成功使用它。
这是可能的,有一篇很好的文章证明了这个概念:https://blog.heptio.com/configuring-your-linux-host-to-resolve-a-local-kubernetes-clusters-service-urls-a8c7bdb212a7
但是,我同意Dan的观点,即通过service + ingress / ELB + external-dns公开是解决这个问题的常用方法。而对于开发目的,我使用https://github.com/txn2/kubefwd也破解了名称解析。