【问题标题】:Resolve custom dns in kubernetes cluster (AKS)解析 kubernetes 集群 (AKS) 中的自定义 dns
【发布时间】:2019-04-10 12:04:28
【问题描述】:

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

第一个域连接集群域 default.svc.cluster.local,第二个域连接到 mydns.local

如何做到这一点?

【问题讨论】:

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


    【解决方案1】:

    我自己找到了解决方案。

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

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

    首先,Pod 尝试在 CoreDNS 中解析 DNS 请求,如果无法解析,则获取主机的 DNS 设置并询问主机中配置的 DNS 服务器。由于在 Azure 中,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 master 总是会在几秒钟后将其重置为默认值。如果要在 AKS 中编辑 ConfigMap,则必须将 configmap 命名为“coredns-custom”。

    yourdns.server 实际上不是服务器。它是domain.server。 DNS 服务器 IP 在代理设置后面。

    【讨论】:

      【解决方案2】:

      我认为您可以使用入口和入口控制器来管理域和路径。使用入口您可以管理多个域并将服务附加到特定域。

      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

      【讨论】:

      • 嘿,我的帖子可能不够清楚。自定义域 (mydns.local) 包含不在 kubernetes 集群中的服务。因此集群需要通过“default.svc.cluster.local”域解析其内部地址,并通过“mydns.local”域解析连接网络中的地址。
      • 您的自定义域是否有 domainNameServer (mydns.local)
      【解决方案3】:

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

      请注意,应使用“转发”插件代替“代理”,如下所述:

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

      【讨论】:

        猜你喜欢
        • 2018-06-23
        • 2020-04-07
        • 1970-01-01
        • 1970-01-01
        • 2020-03-07
        • 1970-01-01
        • 1970-01-01
        • 2020-10-20
        • 1970-01-01
        相关资源
        最近更新 更多