【问题标题】:Connecting Azure Container instances with AKS pods via the AKS dns通过 AKS dns 将 Azure 容器实例与 AKS pod 连接起来
【发布时间】:2022-01-12 23:28:31
【问题描述】:

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

上下文:

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

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 会返回

(按预期工作)

/ # 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 容器实例: 当我从容器实例运行命令时,可以 ping 到 pod2 的内部 IP。

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

# 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,也无法访问。 我无法确定阻塞发生的位置。

有什么想法吗?还是最佳实践?

【问题讨论】:

    标签: kubernetes dns azure-container-instances azure-aks


    【解决方案1】:

    我很确定 AKS dns 服务仅在集群内可用。

    我会这样做:

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

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

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

    【讨论】:

    • 我认为这很好。使用 serviceIP (ClusterIP) 而不是内部 pod IP 是一个很好的建议。事实上,我试图使用 service.yaml 文件定义的主机名。在这种情况下,我使用任何形式的 IP 都很慢,因为我正在通过 terraform 构建这些,而使用 IP 会使它变得更加复杂。最后,使用私有区域也是我们正在实施的一个建议
    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    相关资源
    最近更新 更多