如何通过 coreDNS 在 kubernetes AKS 集群中所有 pod 的 resolv.conf 中添加自定义搜索域?

如何通过 coreDNS 在 kubernetes AKS 集群中所有 pod 的 resolv.conf 中添加自定义搜索域?

我在 Azure 上的虚拟网络内有一个 AKS kubernetes 集群,其中主要有 linux pod。

在同一个虚拟网络中,有一个 Windows 服务器,其中托管着域 mydomain.local 的 DNS 服务器和域控制器,还有 AKS 中的 pod 需要访问的其他 Windows VM。

我们已在虚拟网络设置中设置了域控制器 IP 地址,以便 AKS 可以实际使用它来解析名称。只要使用目标 VM 的 FQDN(如“sql-server.mydomain.local”),名称解析就可以了。

我希望能够在 pod 中通过简单名称(即:“sql-server”)引用 VM,而无需指定完整域名。通常在本地,我只需编辑 kubernetes 节点的 /etc/resolv.conf,在其中添加搜索域。

我知道如何通过 coredns-custom ConfigMap 编辑 CoreDNS 设置,但我找不到有关为 pod 添加搜索域的任何设置。

实际上有没有什么办法可以做到这一点?

谢谢

答案1

我建议你先阅读有关 kubernetes 中的 DNS https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy 特别是关于 Pod 的 DNS 策略。

在我的例子中,我可以为每个部署添加搜索域。设置是 dnsConfig。它确实将搜索域附加到 resolv.conf 请参阅下面的示例

spec:
  tolerations:
  - key: node-role.kubernetes.io/master
    effect: NoSchedule
  containers:
  - name: ubuntu
    image: ubuntu
    args:
    - sleep
    - "10000"
  nodeSelector:
    beta.kubernetes.io/os: linux
  dnsConfig:
    searches:
      - example.local

Resolv.conf 中包含“example.local”域。

cat /etc/resolv.conf 
 nameserver 10.96.0.10
 search default.svc.cluster.local svc.cluster.local cluster.local example.local
 options ndots:1

希望这对你的情况也有帮助。

相关内容