我在 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
希望这对你的情况也有帮助。