具有虛擬網路 (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.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 時避開範圍