想象一下以下场景: 我有一个虚拟网络。其中有多个容器组/实例需要在它们之间进行通信。每个组都位于单独的子网中。还有一个应用程序网关需要了解容器组,因为它将一些流量路由到容器组。目前,通信通过 IP 地址进行。在部署过程中,我告诉网关和一些容器组他们需要知道哪些 IP 地址。
我现在的问题是,每当容器组重新启动(无论是有意还是无意)时,它都可能会获得新的 IP 地址。但一切仍然使用旧的 IP 地址(因为他们如何知道它已更改)。
我发现无法指定静态私有(private) IP 地址或主机名或某种我可以安全使用的 FQDN。另外,私有(private) dns 在这里不起作用,因为我无法更新它。因此该名称仍会解析为旧的 IP 地址。
有谁知道虚拟网络中的容器组之间的网络应该如何完成,以及当某些容器组重新启动或获取新的 IP 地址时哪种方式可以?
我目前能想到的唯一可能的解决方案是,每当该组内的镜像(重新)启动时,它也会更新 azure 中的私有(private) dns。但这并不是我真正认为的(好的)解决方案。图像不应该依赖于特定的主机。此外,我还需要部署某种凭据,这也很糟糕。
最佳答案
目前,我认为没有适合您的解决方案。您知道,在 VNet 中创建容器组时不支持 DNS,并且您也无法决定在重新启动组时该组将使用什么 IP 地址。它就是这样设计的。也许以后会更好。
如果容器实例是您唯一的选择,我建议您在容器组内创建所有容器,以便容器可以与其端口通信,而不是私有(private) IP 地址。如果您不介意使用其他服务,AKS 可能是您更好的选择。
关于azure - 虚拟网络中容器组之间的网络无需 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63780008/