Vpn

具有虛擬網路 (CNI) 怪異的 Azure Kubernetes 服務

  • September 19, 2020

我在將我的 AKS pod/容器連接到我們的本地網路時遇到了一些問題。

我在172.16.20.0/22172.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 特有的導致它失敗的東西?

到目前為止我已經嘗試過:

  • 在 VM 上:ping 到172.16.20.21(pod):工作正常
  • 在 VM 上: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(vm):工作正常
  • 在本地 VPN 設備上:ping 到172.16.20.21(pod):失敗

額外資訊:

ifconfig -a從吊艙:

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豆莢的輸出:

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

在 Microsoft 支持人員的幫助下進行廣泛的故障排除後發現了該問題。

根本原因是 SMTP 伺服器(VPN 端點)的 IP 地址,這與在 K8S 節點上配置172.17.151.254的預設 docker bridge 網路重疊。172.17.0.0/16由於這方面在我啟動的調試 VM 上不存在,因此問題並沒有在那裡表現出來。

172.17.0.0/16經驗教訓:使用 AKS 時避開範圍

引用自:https://serverfault.com/questions/1032251