具有虚拟网络(CNI)怪异性的 Azure Kubernetes 服务

具有虚拟网络(CNI)怪异性的 Azure Kubernetes 服务

我在将 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.21172.17.20.5是 pod 正在运行的 VMSS 节点的 IP,所以这可能是有道理的,但这意味着该节点上的内部路由配置不正确。

或者这是 kubernetes 特有的导致其失败的原因?

到目前为止我已经尝试过:

  • 在虚拟机上:ping 到172.16.20.21(pod):工作正常
  • 在虚拟机上:ping 至172.17.151.254:工作正常
  • 在 VM 上:tracert 172.17.151.2541 跳成功(当它通过默认网关时,这是否至少应该显示 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

routepod 的输出:

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 时要避开射程

相关内容