我想通过向 DNS 服务器添加 stub 区域来解析来自 Kubernetes 集群外部的 kube-dns 名称。这需要将 cluster.local 域更改为适合我的 DNS 命名空间的内容。
集群 DNS 与 cluster.local 一起工作正常。要更改域,我已将/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 上的 KUBELET_DNS_ARGS 行修改为:

Environment="KUBELET_DNS_ARGS=--cluster-dns=x.y.z --cluster-domain=cluster.mydomain.local --resolv-conf=/etc/resolv.conf.kubernetes"
重启后 kubelet 外部名称可解析但 kubernetes 名称解析失败。
我可以看到 kube-dns 仍在运行:
/kube-dns --domain=cluster.local. --dns-port=10053 --config-dir=/kube-dns-config --v=2
我能够找到 cluster.local 的唯一地方是在 pods yaml 配置中,它显示:
  containers:
  - args:
    - --domain=cluster.local.
    - --dns-port=10053
    - --config-dir=/kube-dns-config
    - --v=2
修改 yaml 并使用重新创建 pod 后
kubectl replace --force -f kube-dns.yaml
我仍然看到 kube-dns 开始使用 --domain=cluster.local。
我错过了什么?

最佳答案

我在将基于微服务的应用程序移植到 Kubernetes 时遇到了类似的问题。将内部 DNS 区域更改为 cluster.local 将是一项相当复杂的任务,我们并不真正想要处理。

在我们的例子中,我们 switched from KubeDNS to CoreDNS ,并简单地启用 coreDNS rewrite plugin 将我们的 our.internal.domain 转换为 ourNamespace.svc.cluster.local

执行此操作后,我们的 CoreDNS 配置映射的核心文件部分如下所示:

data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        rewrite name substring our.internal.domain ourNamespace.svc.cluster.local
        proxy . /etc/resolv.conf
        cache 30

    }

这使我们的 kubernetes 服务能够同时响应默认 DNS 区域和我们自己的区域。

关于kubernetes - 如何更改使用 kubeadm 部署的 kubernetes 1.9 上的 cluster.local 默认域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48326773/

10-16 12:49