解决Kubernetes集群(AKS)中的自定义DNS

时间:2019-04-10 12:04:29

标签: kubernetes dns azure-aks kube-dns coredns

我们目前在kubernetes集群(AKS)中具有需要解析两个不同域的Pod。

第一个域为群集域default.svc.cluster.local,第二个域为mydns.local

如何实现?

3 个答案:

答案 0 :(得分:0)

我认为您可以使用入口和入口控制器来管理域和路径。使用入口,您可以管理多个域并向特定域分配服务。

  

https://kubernetes.github.io/ingress-nginx/

这里还分享了从数字海洋设置入口的教程,您可以按照以下步骤进行操作:

  

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

答案 1 :(得分:0)

我自己找到了解决方案。

有两种方法可以实现所需的名称解析:

  1. 如果AKS群集位于Azure VNET中,则可以将VNET中的DNS设置设置为能够解析自定义域的自定义DNS服务器。如果您的Pod没有指定dns设置,则解析将以这种方式工作:

首先,Pod尝试解析CoreDNS中的DNS请求,如果不能,则采用主机的DNS设置并询问在主机中配置的DNS服务器。由于天蓝色,VNET的DNS设置已应用到虚拟机,因此它将询问正确的DNS服务器。

  1. 使用以下json修改AKS集群中的coreDNS设置:

apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: yourdns.server: | yourdns.com:53 { errors cache 1 proxy . 10.1.0.40 }

重要的是,在AKS中您不能覆盖coredns ConfigMap。 Kubernetes主站将始终在几秒钟后将其重置为默认值。如果要在AKS中编辑ConfigMap,则必须将configmap命名为“ coredns-custom”。

“ yourdns.server”实际上不是服务器。它是“ domain.server”。 DNS服务器IP位于代理设置之后。

答案 2 :(得分:0)

第二点“ 2.使用以下json修改AKS集群中的coreDNS设置:”

请注意,如此处所述,应使用“ forward”插件代替“ proxy”:

https://github.com/Azure/AKS/issues/1304