通过 AKS dns 将 Azure 容器实例与 AKS pods 连接

Connecting Azure Container instances with AKS pods via the AKS dns

我无法从 Azure 容器实例访问 k8s 中的 DNS 服务器

上下文:

我在 Azure AKS Kubernetes 集群中有 2 个 pods。

Pod1:名称 = pod1,内部 IP = 10.34.33.112

Pod2:名称=pod2,内部IP=10.34.33.155,集群IP=10.34.104.109

AKS DNS 服务 ip = 10.34.96.58

所以,从 pod1,我预计 nslookup pod2 会 return

(这按预期工作)

/ # nslookup pod2
Server:     10.34.96.58
Address:    10.34.96.58:53

Name:   pod2.default.svc.cluster.local
Address: 10.34.104.109

Azure 容器实例: 当我从容器实例发出 运行 命令时,可以对 pod2 的内部 IP 执行 ping 操作。

这是因为它们通过网络配置文件位于同一虚拟网络中

# ping 10.34.33.155
PING 10.34.33.155 (10.34.33.155): 56 data bytes
64 bytes from 10.34.33.155: seq=0 ttl=63 time=2.208 ms
64 bytes from 10.34.33.155: seq=1 ttl=63 time=1.101 ms

然而,

# nslookup pod2.default.svc.cluster.local 10.34.96.42
;; connection timed out; no servers could be reached

即使我指定了名称服务器,以及 pod 的完整 url,也无法访问。 我无法确定阻塞发生的位置。

有什么想法吗?或最佳实践?

我很确定 AKS dns 服务只能在集群内使用。

这是我会做的:

  • 我会将专用 DNS 区域与 AKS 群集的虚拟网络相关联。
  • 我还将 Azure 容器实例部署到同一网络中。 (您需要为 Azure 容器实例服务分配专用子网。)
  • 我会在第 1 步的专用 DNS 区域中为所需的专用 IP 地址添加 A 记录。

第 3 步可以手动执行,也可以在每次部署时自动执行,方法是使用 Azure CLI 任务扩展部署脚本,在其中配置 Azure 专用 DNS 区域记录。这取决于您的情况:这是一个 POC 项目还是纯粹的运营项目,或者更像是一个不断发展的 DevOps 重环境 CI/CD 等等。

注意:我不太了解您的业务需求,但我怀疑您是否真的想使用服务 IP 而不是 Pod IP。但也有例外,所以如果你知道自己在做什么就不要理我:)