我在将 AKS pod/容器连接到我们的本地网络时遇到了一些问题。
172.16.20.0/22
我在和命名空间中有一个虚拟网络172.16.24.0/29
。它们有 2 个子网,每个子网都以上述范围之一作为其子网范围。
AKS 集群已绑定到172.16.20.0/22
子网,每个节点以及 Pod 都获得该范围内的 IP 地址。我还向此子网添加了一个常规 VM 以进行临时调试。
在172.16.24.0/29
子网中,我们有一个虚拟网络网关(它在这个子网中没有 IP),它将该子网连接到我们的本地网络。VN 网关有一个匹配的本地网络网关,地址空间为172.17.151.0/24
。在我们的本地网络中,我们在 上有一个 SMTP 服务器172.17.151.254
,监听端口 25。
在我为调试而启动的虚拟机上,我可以正常连接到 SMTP 服务器。我也可以毫无问题地从 SMTP 服务器 ping 虚拟机。但是,我无法从 pod 连接到 SMTP(使用 测试netcat -zv 172.17.151.254 25
),也无法从 SMTP 服务器 ping pod 的 IP 地址。
这两个子网都没有附加网络安全组 (NSG),因此不可能是 NSG 规则配置错误。还有什么原因导致连接失败?Pod 从子网中的 DHCP 服务器获取相同的基本网络配置:
- 172.16.20.0/22 IP地址
- 172.16.20.1 作为其默认网关
负责维护连接到 Azure VNG 的本地设备的 IT 人员帮助我进行了调试,他们说在启动 SMTP 连接时,172.17.151.254
他们看到数据包到达,并且来自服务器的响应包返回到 VPN 隧道,因此响应数据包似乎被丢弃在 Azure 的某个地方。
编辑:在与我们的 IT 人员进行进一步调试会话期间,我们注意到来自我们行为不当的 pod 的数据包的源 IP 是 ,172.17.20.5
而不是172.16.20.21
。172.17.20.5
是 pod 正在运行的 VMSS 节点的 IP,所以这可能是有道理的,但这意味着该节点上的内部路由配置不正确。
或者这是 kubernetes 特有的导致其失败的原因?
到目前为止我已经尝试过:
- 在虚拟机上:ping 到
172.16.20.21
(pod):工作正常 - 在虚拟机上:ping 至
172.17.151.254
:工作正常 - 在 VM 上:
tracert 172.17.151.254
1 跳成功(当它通过默认网关时,这是否至少应该显示 2 跳?) - 在 pod 上:ping 至
172.16.20.4
(vm):工作正常 - 在 Pod 上:ping 至
172.17.151.254
:失败 - 在 Pod 上:
traceroute 172.17.151.254
失败,没有显示跳数 - 在本地 VPN 设备上:ping 至
172.16.20.4
(虚拟机):工作正常 - 在本地 VPN 设备上:ping 至
172.16.20.21
(pod):失败
额外信息:
ifconfig -a
来自 pod:
eth0: flags=67<UP,BROADCAST,RUNNING> mtu 1500
inet 172.16.20.21 netmask 255.255.252.0 broadcast 0.0.0.0
ether de:c7:74:e3:c5:24 txqueuelen 1000 (Ethernet)
RX packets 386868 bytes 35746728 (34.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 511891 bytes 43865660 (41.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 5 bytes 504 (504.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5 bytes 504 (504.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
route
pod 的输出:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 172.16.20.1 0.0.0.0 UG 0 0 0 eth0
172.16.20.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
ipconfig /all
从调试虚拟机:
Windows IP Configuration
Host Name . . . . . . . . . . . . : debug-vm
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : nedz0ha4spbubmi5cnxgsnswdh.ax.internal.cloudapp.net
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . : nedz0ha4spbubmi5cnxgsnswdh.ax.internal.cloudapp.net
Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
Physical Address. . . . . . . . . : 00-0D-3A-2D-DC-BA
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::e9bb:fede:66cc:398c%6(Preferred)
IPv4 Address. . . . . . . . . . . : 172.16.20.4(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.252.0
Lease Obtained. . . . . . . . . . : Friday, August 28, 2020 7:15:08 AM
Lease Expires . . . . . . . . . . : Friday, October 8, 2156 1:20:49 PM
Default Gateway . . . . . . . . . : 172.16.20.1
DHCP Server . . . . . . . . . . . : 168.63.129.16
DHCPv6 IAID . . . . . . . . . . . : 100666682
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-DA-67-54-00-0D-3A-2D-DC-BA
DNS Servers . . . . . . . . . . . : 168.63.129.16
NetBIOS over Tcpip. . . . . . . . : Enabled
route print
从调试虚拟机:
===========================================================================
Interface List
6...00 0d 3a 2d dc ba ......Microsoft Hyper-V Network Adapter
1...........................Software Loopback Interface 1
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.20.1 172.16.20.4 10
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
168.63.129.16 255.255.255.255 172.16.20.1 172.16.20.4 11
169.254.169.254 255.255.255.255 172.16.20.1 172.16.20.4 11
172.16.20.0 255.255.252.0 On-link 172.16.20.4 266
172.16.20.4 255.255.255.255 On-link 172.16.20.4 266
172.16.23.255 255.255.255.255 On-link 172.16.20.4 266
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 172.16.20.4 266
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 172.16.20.4 266
===========================================================================
Persistent Routes:
None
IPv6 Route Table
===========================================================================
Active Routes:
If Metric Network Destination Gateway
1 331 ::1/128 On-link
6 266 fe80::/64 On-link
6 266 fe80::e9bb:fede:66cc:398c/128
On-link
1 331 ff00::/8 On-link
6 266 ff00::/8 On-link
===========================================================================
Persistent Routes:
None
答案1
在 Microsoft 支持的帮助下进行了广泛的故障排除后发现了该问题。
根本原因是 上的 SMTP 服务器(VPN 端点)的 IP 地址172.17.151.254
与 K8S 节点上配置的默认 docker 桥接网络重叠172.17.0.0/16
。由于我启动的调试 VM 上不存在此方面,因此问题并未在那里出现。
172.17.0.0/16
经验教训:使用 AKS 时要避开射程