如何在外部公开 Kubernetes DNS

Chr*_*ris 7 kubernetes

外部 DNS 服务器是否可以针对 K8s 集群 DNS 进行解析?我想让驻留在集群外部的应用程序能够解析容器 DNS 名称?

Max*_*bur 7

有可能,有一篇很好的文章证明了这个概念: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,它也可以破解名称解析。


Vas*_*pov 1

我从来没有这样做过,但从技术上讲,这应该可以通过将 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; };
};
Run Code Online (Sandbox Code Playgroud)