我正在虚拟网络的子网中部署具有私有静态 IP 的 Azure 容器实例,但我无法从 Azure 连接到它们。
在开发过程中,我曾经检查ACI内部的一些东西,但现在我不断遇到这样的消息:您正在寻找的资源已被删除,已更名,或暂时不可用。
名称看起来相同,我确信它没有被删除且可用,因为我可以从连接的子网中的虚拟机连接到它。
更新: 刚刚检查了公共IP,同样的故事。
有谁知道如何解决此问题或可能导致问题的原因是什么?预先感谢您!
“您正在查找的资源已被删除、更名或暂时不可用”可能是由几个不同的问题引起的。
一种可能是您部署容器组的子网包含其他资源类型,这是不允许的。
另一种可能性是子网和容器组不在同一个 Azure 订阅上。此外,如果要将容器组部署到虚拟网络,则无法启用活性探测或就绪性探测。根据文档,“目前不支持到端口 25 和 19390 的出站连接。当容器组部署在虚拟网络中时,需要在防火墙中打开端口 19390,以便从 Azure 门户连接到 ACI。”
az network nsg rule list --nsg-name NRMS-k47yvbhjubbl2aci-vnet --resource-group myResourceGroup
如果您已检查防火墙设置并确认必要的端口已打开,则 ACI 在创建容器组期间创建的网络配置文件可能存在问题。您可能需要通过 Azure 门户或 Azure CLI 删除网络配置文件,然后重新创建它。
以下是将容器实例部署到 Azure 虚拟网络中的示例。
az container create --name appcontainer --resource-group myResourceGroup --image mcr.microsoft.com/azuredocs/aci-helloworld --vnet aci-vnet --vnet-address-prefix 10.0.0.0/16 --subnet aci-subnet --subnet-address-prefix 10.0.0.0/24
如果要将容器组部署到现有虚拟网络,请在现有虚拟网络中创建子网、使用已部署容器组的现有子网,或者使用清空“所有”其他资源和配置。 例如,我已将第二个容器组部署到之前创建的同一子网中。
将
CONTAINER_GROUP_IP
设置为使用上面
az container show
命令检索到的 IP,并执行以下 az container create
命令。CONTAINER_GROUP_IP=<container-group-IP-address>
az container create --resource-group myResourceGroup --name commchecker --image alpine:3.5 --command-line "wget $CONTAINER_GROUP_IP" --restart-policy never --vnet aci-vnet --subnet aci-subnet
az container logs --resource-group myResourceGroup --name commchecker
此处,输出显示
wget
能够使用本地子网上的私有 IP 地址从第一个容器连接并下载索引文件。两个容器组之间的网络流量保留在虚拟网络内。
az container show --resource-group myResourceGroup --name arkoappcontainer
如果您仍然遇到问题,可以联系 Azure 支持以获得进一步帮助。
参考资料: