我们有一个在VNET上通过ACI运行的容器,该容器最近已停止访问Internet地址(google.com,Azure SQL数据库等)。我在VNET以及由“ az container create”命令创建的全新VNETS中调出了其他几个容器,它们都显示相同的行为。我已经测试了股票ubuntu和高山图像(除了我们原始的自定义图像),甚至尝试了Microsoft的Hello World图像。在任何情况下(我尝试过的每个vnet和区域),对任何外部地址的ping操作都会失败(但内部地址不会),但DNS确实可以解析。我们获得以下网络接口(eth0获得VNET /子网本地地址)
eth0 Link encap:Ethernet HWaddr 36:57:E0:61:78:DF
inet addr:10.202.94.4 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::3457:e0ff:fe61:78df/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:936 (936.0 B) TX bytes:936 (936.0 B)
eth1 Link encap:Ethernet HWaddr C2:DB:44:D5:48:5D
inet addr:169.254.0.4 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::c0db:44ff:fed5:485d/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:50 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3835 (3.7 KiB) TX bytes:2392 (2.3 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
我们得到以下路由表(同样是eth0上的vnet)
default via 169.254.0.1 dev eth1
10.0.0.0/8 via 10.202.94.1 dev eth0
10.202.94.0/24 dev eth0 src 10.202.94.4
169.254.0.0/16 dev eth1 src 169.254.0.4
172.16.0.0/12 via 10.202.94.1 dev eth0
192.168.0.0/16 via 10.202.94.1 dev eth0
对于Google和我们的一个数据库,traceroute的结果如下所示
/ # traceroute google.com
traceroute to google.com (216.58.193.78), 30 hops max, 46 byte packets
1 169.254.0.1 (169.254.0.1) 0.007 ms 0.008 ms 0.005 ms
2 *
# traceroute [ourdb].database.windows.net
traceroute to [ourdb].database.windows.net (xxx.xx.xxx.xxx), 30 hops max, 46 byte packets
1 169.254.0.1 (169.254.0.1) 0.008 ms 0.008 ms 0.005 ms
2 * * *
3 * * *
4 *
我用来自动创建带有实例的vnet的示例。
az container create --resource-group rg-dev-aci --image alpine:latest --vnet vnet-dev-aci-east2 --subnet subnet-aci --subscription [my subscription id] --name test-alpine-networking-autovnet --command-line "tail -f /dev/null" --location "East US 2" --vnet-address-prefix 10.201.0.0/16 --subnet-address-prefix 10.201.94.0/24
似乎ACI(在VNET上)网络配置发生了某些变化,或者ACI发生了其他变化。我知道这是ACI的预览功能,但我认为不会阻止在VNET中运行的容器连接到Internet地址。
任何人对于我们可能做错了什么或我们可以做些什么来改变事情(例如默认路由的网关)都有任何想法。还有其他人看到同样的问题吗?