精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Kubernetes網絡故障排查實戰之旅

云計算 云原生
調試Kubernetes集群中的網絡問題并非易事。然而,通過明確的方法、專家的幫助和公開可用的資料,找到根本原因和修復問題是可能的。在這個過程中獲得樂趣并掌握知識。

在開發Kata/remote-hypervisor(也稱為peer-pods)方案時,我遇到了一個問題,即Kubernetes pod IP在工作節點上無法訪問。在本博客中,我將描述Kubernetes網絡故障排查過程,希望對讀者有幫助。

譯自A Hands-on Kubernetes Network Troubleshooting Journey。

Kata遠程管理程序(peer-pods)方案通過在AWS或Microsoft Azure等基礎設施環境中使用本機基礎設施管理API(如在AWS上創建Kata VM時使用AWS API,在Azure上創建時使用Microsoft Azure API),實現在任何基礎設施環境中創建Kata VM。CNCF保密容器項目的cloud-api-adaptor子項目實現了Kata遠程管理程序。

如下圖所示,在peer-pods方案中,pod(Kata)虛擬機在Kubernetes(K8s)工作節點外部運行,通過VXLAN隧道從工作節點訪問pod IP。使用隧道可以確保pod聯網繼續正常工作,無需對CNI網絡做任何改變。

圖片圖片

當使用Kata容器時,Kubernetes pod在虛擬機內運行,因此我們將運行pod的虛擬機稱為Kata VM或pod虛擬機。

問題

pod IP10.132.2.46,它位于pod虛擬機上(IP:192.168.10.201),從工作節點虛擬機(IP:192.168.10.163)無法訪問。

以下是我環境中的虛擬機詳細信息 —— 工作節點虛擬機和pod(Kata)虛擬機。使用的Kubernetes CNI是OVN-Kubernetes。

+===========================+================+================+
|          VM名稱           |   IP地址       |     備注       |
+===========================+================+================+
| ocp-412-ovn-worker-1      | 192.168.10.163 | 工作節點虛擬機 |
+---------------------------+----------------+----------------+
| podvm-nginx-priv-8b726648 | 192.168.10.201 | Pod虛擬機      |
+---------------------------+----------------+----------------+

最簡單的解決方案就是請網絡專家來解決這個問題。然而,在我的情況下,由于其他緊迫問題,專家無法直接參與解決。此外,peer-pods網絡拓撲結構還比較新,涉及多個網絡棧 —— Kubernetes CNI、Kata網絡和VXLAN隧道,使得根本原因難以查明且非常耗時。

因此,我將這種情況視為提高我的Kubernetes網絡技能的機會。在一些Linux網絡核心專家的指導下,我開始自行調試。

在后續章節中,我將通過我的方法帶您逐步了解調試過程和找到問題根本原因。我希望這個過程能對Kubernetes網絡問題故障排除有所幫助。

故障排查 - 第一階段

在高層面上,我采取的方法包含以下兩個步驟:

  1. 了解網絡拓撲結構
  2. 從拓撲結構中識別有問題的部分

讓我們從工作節點虛擬機ping IP:10.132.2.46,并跟蹤網絡棧中的流量:

[root@ocp-412-worker-1 core]# ping 10.132.2.46

Linux會參考路由表來確定發送數據包的目的地。

[root@ocp-412-worker-1 core]# ip route get 10.132.2.46
10.132.2.46 dev ovn-k8s-mp0 src 10.132.2.2 uid 0

因此,到pod IP的路由是通過設備ovn-k8s-mp0

讓我們獲取工作節點網絡詳細信息,并檢索有關ovn-k8s-mp0設備的信息。

[root@ocp-412-ovn-worker-1 core]# ip r
default via 192.168.10.1 dev br-ex proto dhcp src 192.168.10.163 metric 48
10.132.0.0/14 via 10.132.2.1 dev ovn-k8s-mp0
10.132.2.0/23 dev ovn-k8s-mp0 proto kernel scope link src 10.132.2.2
169.254.169.0/29 dev br-ex proto kernel scope link src 169.254.169.2
169.254.169.1 dev br-ex src 192.168.10.163 mtu 1400
169.254.169.3 via 10.132.2.1 dev ovn-k8s-mp0
172.30.0.0/16 via 169.254.169.4 dev br-ex mtu 1400
192.168.10.0/24 dev br-ex proto kernel scope link src 192.168.10.163 metric 48




[root@ocp-412-ovn-worker-1 core]# ip a


[snip]


2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master ovs-system state UP group default qlen 1000
    link/ether 52:54:00:f9:70:58 brd ff:ff:ff:ff:ff:ff
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 32:7c:7a:20:6e:5a brd ff:ff:ff:ff:ff:ff
4: genev_sys_6081: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65000 qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
    link/ether 3a:9c:a8:4e:15:0c brd ff:ff:ff:ff:ff:ff
    inet6 fe80::389c:a8ff:fe4e:150c/64 scope link
       valid_lft forever preferred_lft forever
5: br-int: <BROADCAST,MULTICAST> mtu 1400 qdisc noop state DOWN group default qlen 1000
    link/ether d2:b6:67:15:ef:06 brd ff:ff:ff:ff:ff:ff
6: ovn-k8s-mp0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether ee:cb:ed:8e:f9:e0 brd ff:ff:ff:ff:ff:ff
    inet 10.132.2.2/23 brd 10.132.3.255 scope global ovn-k8s-mp0
       valid_lft forever preferred_lft forever
    inet6 fe80::eccb:edff:fe8e:f9e0/64 scope link
       valid_lft forever preferred_lft forever
8: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 52:54:00:f9:70:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.163/24 brd 192.168.10.255 scope global dynamic noprefixroute br-ex
       valid_lft 2266sec preferred_lft 2266sec
    inet 169.254.169.2/29 brd 169.254.169.7 scope global br-ex
       valid_lft forever preferred_lft forever
    inet6 fe80::17f3:957b:5e8d:a4a6/64 scope link noprefixroute
       valid_lft forever preferred_lft forever


[snip]

從上述輸出可以看出,ovn-k8s-mp0接口的IP是10.132.2.2/23

讓我們獲取ovn-k8s-mp0接口的設備詳細信息。

如下輸出所示,這個接口是一個OVS實體。

[root@ocp-412-ovn-worker-1 core]# ip -d li sh dev ovn-k8s-mp0
6: ovn-k8s-mp0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/ether ee:cb:ed:8e:f9:e0 brd ff:ff:ff:ff:ff:ff promiscuity 1 minmtu 68 maxmtu 65535
openvswitch addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

ovn-k8s-mp0是一個OVS橋嗎?

從下面的命令輸出可以清楚看到,ovn-k8s-mp0不是一個OVS橋。工作節點上存在的只有兩個橋:br-ex和br-int

[root@ocp-412-ovn-worker-1 core]# ovs-vsctl list-br
br-ex
br-int

所以ovn-k8s-mp0是一個OVS端口。我們需要找出擁有這個端口的OVS橋。

從下面的命令輸出可以清楚看到,ovn-k8s-mp0不是橋br-ex的OVS端口。

[root@ocp-412-ovn-worker-1 core]# ovs-ofctl dump-ports br-ex ovn-k8s-mp0
ovs-ofctl: br-ex: unknown port `ovn-k8s-mp0`

從下面的命令輸出可以清楚看到,ovn-k8s-mp0是一個OVS橋br-int的端口。

[root@ocp-412-ovn-worker-1 core]# ovs-ofctl dump-ports br-int ovn-k8s-mp0
OFPST_PORT reply (xid=0x4): 1 ports
port "ovn-k8s-mp0": rx pkts=1798208, bytes=665641420, drop=2, errs=0, frame=0, over=0, crc=0tx pkts=2614471, bytes=1357528110, drop=0, errs=0, coll=0

總結一下,ovn-k8s-mp0是一個br-int** OVS橋上的端口。它也持有橋的IP,即**10.132.2.2/23

現在,讓我們獲取pod的網絡配置詳細信息。

必須知道pod網絡命名空間才能確定pod網絡詳細信息。下面的命令通過IP找到pod網絡命名空間。

[root@ocp-412-ovn-worker-1 core]# POD_IP=10.132.2.46; for ns in $(ip netns ls | cut -f 1 -d " "); do ip netns exec $ns ip a | grep -q $POD_IP; status=$?; [ $status -eq 0 ] && echo "pod namespace: $ns" ; done


pod namespace: c16c7a01-1bc5-474a-9eb6-15474b5fbf04

一旦知道了pod網絡命名空間,就可以找到pod的網絡配置詳細信息,如下所示。

[root@ocp-412-ovn-worker-1 core]# NS=c16c7a01–1bc5–474a-9eb6–15474b5fbf04
[root@ocp-412-ovn-worker-1 core]# ip netns exec $NS ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host
 valid_lft forever preferred_lft forever
2: eth0@if4256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UP group default qlen 1000
 link/ether 0a:58:0a:84:02:2e brd ff:ff:ff:ff:ff:ff link-netns 59e250f6–0491–4ff4-bb22-baa3bca249f6
 inet 10.132.2.46/23 brd 10.132.3.255 scope global eth0
 valid_lft forever preferred_lft forever
 inet6 fe80::858:aff:fe84:22e/64 scope link
 valid_lft forever preferred_lft forever
4257: vxlan1@if4257: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
 link/ether ca:40:81:86:fa:73 brd ff:ff:ff:ff:ff:ff link-netns 59e250f6–0491–4ff4-bb22-baa3bca249f6
 inet6 fe80::c840:81ff:fe86:fa73/64 scope link
 valid_lft forever preferred_lft forever




[root@ocp-412-ovn-worker-1 core]# ip netns exec $NS ip r
default via 10.132.2.1 dev eth0
10.132.2.0/23 dev eth0 proto kernel scope link src 10.132.2.46

所以eth0@if4256是pod的主網絡接口。

讓我們獲取eth0設備的詳細信息。

從下面的輸出可以看出,pod網絡命名空間中的eth0設備是一個veth設備。

[root@ocp-412-ovn-worker-1 core]# ip netns exec $NS ip -d li sh dev eth0
link/ether 0a:58:0a:84:02:2e brd ff:ff:ff:ff:ff:ff link-netns 59e250f6–0491–4ff4-bb22-baa3bca249f6
veth addrgenmode eui64 numtxqueues 8 numrxqueues 8 gso_max_size 65536 gso_max_segs 65535 tso_max_size 524280 tso_max_segs 65535 gro_max_size 65536

眾所周知veth設備以對的形式工作;一端在init(或root)命名空間中,另一端在(pod)網絡命名空間中。

讓我們在init命名空間中找到pod對應的veth設備對。

[root@ocp-412-ovn-worker-1 core]# ip a | grep -A1 ^4256
4256: 8b7266486ea2861@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue master ovs-system state UP group default
link/ether de:fb:3e:87:0f:d6 brd ff:ff:ff:ff:ff:ff link-netns c16c7a01–1bc5–474a-9eb6–15474b5fbf04

所以,8b7266486ea2861@if2是init命名空間中的podveth設備端點。這個veth對連接了init和pod網絡命名空間。

讓我們找出veth設備端點的詳細信息。

[root@ocp-412-ovn-worker-1 core]# ip -d li sh dev 8b7266486ea2861
4256: 8b7266486ea2861@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue master ovs-system state UP mode DEFAULT group default
link/ether de:fb:3e:87:0f:d6 brd ff:ff:ff:ff:ff:ff link-netns c16c7a01–1bc5–474a-9eb6–15474b5fbf04 promiscuity 1 minmtu 68 maxmtu 65535
veth
openvswitch_slave addrgenmode eui64 numtxqueues 4 numrxqueues 4 gso_max_size 65536 gso_max_segs 65535

所以8b7266486ea2861@if2是一個OVS實體。轉儲OVS交換機詳細信息將提供哪個OVS橋擁有此端口的詳細信息。

如下輸出所示,橋br-int擁有這個端口。

注意,使用ovs-vsctl命令是之前ovs-ofctl dump-ports <bridge> <port>命令的另一種選擇。這是為了展示不同的命令可以幫助探索網絡拓撲結構。

[root@ocp-412-ovn-worker-1 core]# ovs-vsctl show


[snap]


Bridge br-int
        fail_mode: secure
        datapath_type: system


        [snip]


        Port "8b7266486ea2861"
            Interface "8b7266486ea2861"


[snap]

所以br-int擁有在init命名空間中具有podveth端點的端口。回想一下,它還持有ovn-k8s-mp0端口。

讓我們也獲取pod的vxlan詳細信息。

如下輸出所示,vxlan隧道的遠端點是IP192.168.10.201。這是pod虛擬機的IP。

[root@ocp-412-ovn-worker-1 core]# ip netns exec $NS ip -d li sh dev vxlan1
4257: vxlan1@if4257: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 
link/ether ca:40:81:86:fa:73 brd ff:ff:ff:ff:ff:ff link-netns 59e250f6–0491–4ff4-bb22-baa3bca249f6 promiscuity 0 minmtu 68 maxmtu 65535
vxlan id 555005 remote 192.168.10.201 srcport 0 0 dstport 4789 nolearning ttl auto ageing 300 udpcsum noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

一個浮現的問題是數據包如何從eth0接口發送到vxlan1接口。

這是通過在網絡命名空間中設置Linux流量控制(TC)在eth0和vxlan1之間鏡像流量來實現的。這是從Kata容器的設計中已知的。然而,我認為在故障排除網絡問題時檢查TC配置是一種好的實踐。

下面的輸出顯示了我環境中pod網絡命名空間中設備配置的TC過濾器。

[root@ocp-412-ovn-worker-1 core]# ip netns exec $NS tc filter show dev eth0 root
filter parent ffff: protocol all pref 49152 u32 chain 0
filter parent ffff: protocol all pref 49152 u32 chain 0 fh 800: ht divisor 1
filter parent ffff: protocol all pref 49152 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 terminal flowid not_in_hw
  match 00000000/00000000 at 0
        action order 1: mirred (Egress Redirect to device vxlan1) stolen
        index 1 ref 1 bind 1


[root@ocp-412-ovn-worker-1 core]# ip netns exec $NS tc filter show dev vxlan1 root
filter parent ffff: protocol all pref 49152 u32 chain 0
filter parent ffff: protocol all pref 49152 u32 chain 0 fh 800: ht divisor 1
filter parent ffff: protocol all pref 49152 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 terminal flowid not_in_hw
  match 00000000/00000000 at 0
        action order 1: mirred (Egress Redirect to device eth0) stolen
        index 2 ref 1 bind 1

eth0的出口被重定向到了vxlan1,而vxlan1的出口被重定向到了eth0

有了所有這些細節,就可以為參考和進一步分析繪制工作節點網絡拓撲圖。拓撲結構如下圖所示。

圖片圖片

現在,讓我們把重點轉到pod虛擬機上。

請注意,pod虛擬機的設計是使用一個名為podns的固定pod網絡命名空間。

以下輸出顯示了pod虛擬機的網絡配置:

ubuntu@podvm-nginx-priv-8b726648:/home/ubuntu# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:e1:58:67 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.201/24 brd 192.168.10.255 scope global dynamic ens2
valid_lft 2902sec preferred_lft 2902sec
inet6 fe80::5054:ff:fee1:5867/64 scope link
valid_lft forever preferred_lft forever


root@podvm-nginx-priv-8b726648:/home/ubuntu# ip r
default via 192.168.10.1 dev ens2 proto dhcp src 192.168.10.201 metric 100
192.168.10.0/24 dev ens2 proto kernel scope link src 192.168.10.201
192.168.10.1 dev ens2 proto dhcp scope link src 192.168.10.201 metric 100


root@podvm-nginx-priv-8b726648:/home/ubuntu# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

以下輸出顯示了podns網絡命名空間內的網絡配置。

root@podvm-nginx-priv-8b726648:/home/ubuntu# ip netns exec podns ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host  
       valid_lft forever preferred_lft forever
3: vxlan0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 7e:e5:f7:e6:f5:1a brd ff:ff:ff:ff:ff:ff link-netnsid 0 
    inet 10.132.2.46/23 brd 10.132.3.255 scope global vxlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::7ce5:f7ff:fee6:f51a/64 scope link  
       valid_lft forever preferred_lft forever


root@podvm-nginx-priv-8b726648:/home/ubuntu# ip netns exec podns ip r
default via 10.132.2.1 dev vxlan0  
10.132.2.0/23 dev vxlan0 proto kernel scope link src 10.132.2.46


root@podvm-nginx-36590ccc:/home/ubuntu# ip netns exec podns ip -d li sh vxlan0 
3: vxlan0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 7e:e5:f7:e6:f5:1a brd ff:ff:ff:ff:ff:ff link-netnsid 0 promiscuity 0 minmtu 68 maxmtu 65535
    vxlan id 555005 remote 192.168.10.163 srcport 0 0 dstport 4789 nolearning ttl auto ageing 300 udpcsum noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535


root@podvm-nginx-priv-8b726648:/home/ubuntu# ip netns exec podns iptables -S  
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

vxlan隧道設置看起來正常。它顯示了遠程端點IP 192.168.10.163,這是工作節點虛擬機的IP。

此外,pod虛擬機中沒有防火墻規則。

但是,你沒有看到像在工作節點上一樣的veth對。現在,浮現的一個問題是,沒有veth對,init和podns網絡命名空間之間如何進行通信。請注意,物理設備在init(root)命名空間中,vxlan設備在podns網絡命名空間中。

感謝Stefano Brivio指出了使這種情況發生的Linux內核提交。

commit f01ec1c017dead42092997a2b8684fcab4cbf126
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date: Thu Apr 24 10:02:49 2014 +0200
vxlan: add x-netns support
 
 This patch allows to switch the netns when packet is encapsulated or
 decapsulated.
 The vxlan socket is openned into the i/o netns, ie into the netns where
 encapsulated packets are received. The socket lookup is done into this netns to
 find the corresponding vxlan tunnel. After decapsulation, the packet is
 injecting into the corresponding interface which may stand to another netns.
 
 When one of the two netns is removed, the tunnel is destroyed.
 
 Configuration example:
 ip netns add netns1
 ip netns exec netns1 ip link set lo up
 ip link add vxlan10 type vxlan id 10 group 239.0.0.10 dev eth0 dstport 0
 ip link set vxlan10 netns netns1
 ip netns exec netns1 ip addr add 192.168.0.249/24 broadcast 192.168.0.255 dev vxlan10
 ip netns exec netns1 ip link set vxlan10 up

這也有一個StackOverflow主題對此進行了解釋。

這些細節為我們提供了對pod虛擬機網絡拓撲的良好概述,如下圖所示。

圖片圖片

讓我們在vxlan0接口上運行tcpdump,看ICMP請求是否從工作節點接收。

如下輸出所示,ICMP請求已接收,但沒有響應。

root@podvm-nginx-priv-8b726648:/home/ubuntu# ip netns exec podns tcpdump -i vxlan0 -s0 -n -vv
tcpdump: listening on vxlan0, link-type EN10MB (Ethernet), capture size 262144 bytes


[snip]


10.132.2.2 > 10.132.2.46: ICMP echo request, id 20, seq 1, length 64
10:34:17.389643 IP (tos 0x0, ttl 64, id 27606, offset 0, flags [DF], proto ICMP (1), length 84)
10.132.2.2 > 10.132.2.46: ICMP echo request, id 20, seq 2, length 64
10:34:18.413682 IP (tos 0x0, ttl 64, id 27631, offset 0, flags [DF], proto ICMP (1), length 84)
10.132.2.2 > 10.132.2.46: ICMP echo request, id 20, seq 3, length 64
10:34:19.002837 IP (tos 0x0, ttl 1, id 28098, offset 0, flags [DF], proto UDP (17), length 69)


[snip]

現在,讓我們總結一下情況。

通過這個練習,你對工作節點和pod虛擬機的網絡拓撲有了很好的理解,隧道的設置看起來也沒有問題。你也看到ICMP數據包被pod虛擬機接收,沒有軟件防火墻阻止數據包。那么下一步該做什么?

繼續閱讀以了解下一步該做什么:-)

故障排查 - 第二階段

我使用wireshark分析了來自工作正常(常規Kata)設置的tcpdump捕獲。Wireshark圖形界面可以方便地理解通過tcpdump捕獲的網絡跟蹤。

在跟蹤中沒有觀察到ARP請求和響應。但是,工作節點上的ARP表被填充,ARP表使用pod網絡命名空間中的eth0設備的MAC(在工作節點上),而不是pod虛擬機上的podns命名空間中的vxlan0設備的MAC。

? (10.132.2.46) at 0a:58:0a:84:02:2e [ether] on ovn-k8s-mp0

0a:58:0a:84:02:2e是工作節點上pod網絡命名空間中eth0接口的MAC,而7e:e5:f7:e6:f5:1a是pod虛擬機上podns命名空間中的vxlan0接口的MAC。

這是問題的原因 - 從工作節點無法訪問pod IP。ARP條目應指向pod虛擬機上podns命名空間中的vxlan0設備的MAC(即7e:e5:f7:e6:f5:1a)。

事后看來,我本該首先查看ARP表條目。下次遇到類似問題我一定會這么做;)

解決方案

Stefano Brivio的一個小技巧解決了這個問題。在pod虛擬機的vxlan0接口上使用與工作節點上pod的eth0接口相同的MAC地址可以解決連接問題。

ip netns exec podns ip link set vxlan0 down
ip netns exec podns ip link set dev vxlan0 address 0a:58:0a:84:02:2e
ip netns exec podns ip link set vxlan0 up

最終的網絡拓撲結構如下所示。

圖片圖片

結論

調試Kubernetes集群中的網絡問題并非易事。然而,通過明確的方法、專家的幫助和公開可用的資料,找到根本原因和修復問題是可能的。在這個過程中獲得樂趣并掌握知識。

我希望這篇文章對你有幫助。

以下是在我的故障排除練習中非常有用的參考資料列表:

  • https://learnk8s.io/kubernetes-network-packets
  • https://programmer.help/blogs/practice-vxlan-under-linux.html
  • https://www.man7.org/linux/man-pages/man7/ovn-architecture.7.html
  • https://developers.redhat.com/articles/2022/04/06/introduction-linux-bridging-commands-and-features#vlan_tunnel_mapping
  • https://www.tkng.io/cni/flannel/
  • https://access.redhat.com/documentation/en-us/openshift_container_platform/3.4/html/cluster_administration/admin-guide-sdn-troubleshooting#debugging-local-networking

責任編輯:武曉燕 來源: 云云眾生s
相關推薦

2024-12-04 16:44:51

2017-03-24 09:50:00

2010-09-16 14:30:26

無線網絡故障

2010-09-25 13:52:11

無線網絡故障排查

2011-01-24 13:42:27

網絡故障網絡故障修復

2015-08-24 11:02:56

網絡故障負載均衡

2010-08-31 09:17:17

2010-08-05 09:46:54

2019-04-11 09:17:14

網絡故障路由匯總

2009-05-19 16:40:41

TTL網絡故障科來軟件

2018-09-10 05:03:51

網絡故障故障排查運維

2013-03-25 09:19:10

Linux服務器故障排查

2021-05-26 11:06:06

Kubernetes網絡故障集群節點

2010-09-07 09:35:22

2010-04-19 13:50:20

XP系統無線網絡故障

2013-03-26 09:21:40

Linux服務器故障排查

2011-03-14 14:13:28

網絡故障

2019-12-09 10:40:15

YAMLBashKubernetes

2017-08-18 22:40:33

線上線程備份

2010-08-26 15:11:19

點贊
收藏

51CTO技術棧公眾號

色七七在线观看| 欧美福利精品| 欧美人妻精品一区二区免费看| 亚洲一区二区三区在线免费| 亚洲高清不卡在线观看| 欧美一区免费视频| 亚洲va天堂va欧美ⅴa在线| 久久电影一区| 免费91麻豆精品国产自产在线观看| 久久精品无码专区| 日本综合久久| 亚洲成人你懂的| 亚洲免费不卡| 十九岁完整版在线观看好看云免费| 久久国产剧场电影| 国自在线精品视频| 欧美风情第一页| 亚洲影院天堂中文av色| 日韩午夜在线影院| 在线免费观看视频黄| 九九色在线视频| 国产精品免费观看视频| 久久久久久欧美精品色一二三四| 一级黄色a毛片| 麻豆成人精品| 久久人人97超碰精品888| 三级在线观看免费大全| 国产在线观看91一区二区三区 | 91香蕉视频导航| 蜜桃麻豆影像在线观看| 亚洲精品老司机| 亚洲一区精品视频| 国产视频网站在线| 91香蕉视频mp4| 国产亚洲第一区| www.com在线观看| 精品一区二区三区香蕉蜜桃| 国产精品r级在线| 久久黄色精品视频| 亚洲一级特黄| 久久久久久久久久久久久久久久久久av| 很污很黄的网站| 日韩dvd碟片| 伊人亚洲福利一区二区三区| 波多野结衣办公室33分钟| 国语一区二区三区| 亚洲电影中文字幕| 成人性生活免费看| 免费成人三级| 亚洲精品国产精品乱码不99按摩| 日韩精品――色哟哟| 玖玖玖视频精品| 7777精品伊人久久久大香线蕉经典版下载| 日韩在线第三页| 天堂久久午夜av| 欧美亚洲高清一区| 五月婷婷六月合| 亚洲综合视频| 日韩一区二区在线观看视频| 杨幂一区二区国产精品| 欧美一级片网址| 日韩精品一区国产麻豆| 四虎精品一区二区| 美女av一区| 亚洲欧美中文字幕在线一区| 男人舔女人下部高潮全视频| 日韩中文在线电影| 久久综合国产精品台湾中文娱乐网| 成人涩涩小片视频日本| 国产精品vip| 欧美最猛性xxxxx(亚洲精品)| 国产91国语对白在线| 日韩国产精品91| 91美女片黄在线观| 高潮毛片7777777毛片| av网站一区二区三区| 欧美日韩亚洲在线| 天堂а√在线资源在线| 亚洲精品成a人| 亚洲不卡中文字幕无码| 中文另类视频| 日韩三级视频在线看| xxxxxx黄色| 精品国产91| 欧美日本国产在线| 日韩不卡在线播放| 狠狠色狠狠色综合系列| 国产免费一区二区| 成人免费在线电影| 一区二区欧美精品| 91av俱乐部| 一级毛片精品毛片| 亚洲丝袜在线视频| 欧美日韩一级大片| 天堂资源在线中文精品| 99精彩视频在线观看免费| 欧美巨乳在线| 一个色在线综合| 91视频免费版污| **爰片久久毛片| 色噜噜狠狠狠综合曰曰曰 | 日本国产在线| 亚洲欧洲制服丝袜| 国产精品免费观看久久| 欧美不卡在线观看| 亚洲色在线视频| 国产在线视频第一页| 美女精品一区二区| 久久久久久久久久码影片| 国产三级在线播放| 欧美性生交大片免费| 中文字幕avav| 成人精品视频| 欧美中文字幕视频在线观看| 99在线观看免费| 中文字幕乱码一区二区免费| 欧美二区在线视频| 日韩免费成人| 俺去了亚洲欧美日韩| 男人的天堂av网站| 99视频精品全部免费在线| 欧美精品一区二区性色a+v| 26uuu亚洲电影| 亚洲国产精品电影| 在线观看成人毛片| 精彩视频一区二区三区| 日韩av影视| 中文av在线全新| 亚洲国产高清福利视频| 国产一级片免费看| 国产在线精品一区二区| 亚洲视频在线观看日本a| 午夜精品久久久久久久久久蜜桃| 亚洲成人黄色网| 伊人365影院| 东方欧美亚洲色图在线| 加勒比海盗1在线观看免费国语版| 国模视频一区| 亚洲一级黄色av| 日本高清不卡码| 91捆绑美女网站| 日本一区二区黄色| 日本中文字幕在线一区| 2019精品视频| 亚洲av成人无码网天堂| 都市激情亚洲色图| 美女久久久久久久久久| 另类图片国产| 日韩理论片在线观看| 外国电影一区二区| 中文字幕在线视频日韩| 一本色道久久综合熟妇| 18成人在线观看| 亚洲天堂网站在线| 国产一区清纯| 久久资源亚洲| 韩国精品主播一区二区在线观看| 中文字幕九色91在线| 中文字幕在线网站| 亚洲欧洲日产国产综合网| 免费观看黄网站| 亚洲久久成人| 日本精品视频一区| 另类一区二区| 久久99精品久久久久久青青91| 亚洲h视频在线观看| 姬川优奈aav一区二区| 免费看污片网站| 久久国产视频网| av一区二区三区免费观看| 国产精品网址| 国产成人久久久精品一区| 欧美性videos| 欧美大片在线观看一区| av黄色在线看| 国产精品久久久久久久久图文区| 欧美wwwwwww| 亚洲性图久久| 天堂资源在线亚洲资源| 香蕉大人久久国产成人av| 性色av一区二区咪爱| 丁香婷婷在线| 日韩欧美美女一区二区三区| 国产精品国产三级国产专区52| 欧美国产国产综合| 小日子的在线观看免费第8集| 日韩视频一区二区三区在线播放免费观看 | 青草全福视在线| 在线观看美女av| 魔女鞋交玉足榨精调教| 亚洲天堂黄色| 欧美一级日本a级v片| 偷拍自拍亚洲| 亚洲**2019国产| 黄色在线免费看| 亚洲精选一区二区| 国产女人18毛片水真多| 福利一区视频在线观看| 欧美手机在线观看| 97se亚洲国产综合自在线不卡| 人人干人人干人人| 亚洲毛片视频| 在线观看视频黄色| 国产亚洲一卡2卡3卡4卡新区 | 大陆极品少妇内射aaaaa| 欧美日韩性在线观看| 高清国产一区| 成人噜噜噜噜| 国产精品久久久999| cao在线视频| 美日韩精品免费视频| 春暖花开成人亚洲区| 日韩成人中文字幕| 精品国产无码一区二区三区| 精品视频一区三区九区| 国产专区第一页| 亚洲福利国产精品| 日韩一级片大全| 国产女同性恋一区二区| 免费中文字幕av| 波多野洁衣一区| 欧美日韩一区二区区别是什么 | 欧美日韩美女一区二区| 久久久午夜影院| 亚洲国产sm捆绑调教视频| 91嫩草丨国产丨精品| 欧美国产精品中文字幕| 黄色短视频在线观看| 成人午夜在线播放| 久久综合桃花网| 国产美女精品人人做人人爽| 性欧美videossex精品| 久热re这里精品视频在线6| 国精产品一区一区三区视频| 亚洲私人影院| 无码人妻精品一区二区蜜桃网站| 欧美在线三级| 日本老太婆做爰视频| 中文字幕免费精品| 中国一级大黄大黄大色毛片| 天天综合久久| 中文字幕免费高| 欧美1区3d| 日韩一级特黄毛片| 欧美久久综合| 996这里只有精品| 欧美视频日韩| 日韩 欧美 视频| 99亚洲伊人久久精品影院红桃| 日本一区午夜艳熟免费| 一区在线视频观看| 日韩av三级在线| 久久久久久婷| 亚洲免费999| 激情六月婷婷久久| 99热这里只有精品2| 成人av电影免费观看| 国产精品入口麻豆| 91一区二区三区在线观看| 香蕉视频黄色在线观看| 国产欧美久久久精品影院| 在哪里可以看毛片| 国产精品免费av| 玖玖爱免费视频| 午夜欧美大尺度福利影院在线看| 亚洲另类欧美日韩| 在线精品视频小说1| 国产一区二区三区四区视频| 欧美一区二区三区不卡| 内射后入在线观看一区| 亚洲人成电影在线观看天堂色| 99re在线视频| 精品自拍视频在线观看| 日本蜜桃在线观看视频| 国产精品日韩专区| 精品午夜视频| 蜜桃免费一区二区三区| 日韩一区亚洲二区| 人妻无码久久一区二区三区免费| 久久综合亚州| 成人在线短视频| 国产亚洲污的网站| 国产67194| 一本久久a久久精品亚洲| 91tv国产成人福利| 亚洲国产一区二区三区在线观看| yiren22亚洲综合伊人22| 欧美成人四级hd版| 欧美第一视频| 91在线播放视频| 日韩www.| 国产极品尤物在线| 久久福利视频一区二区| 国产 中文 字幕 日韩 在线| 国产精品伦理在线| 日韩成人免费在线观看| 5月丁香婷婷综合| 男人的天堂在线视频| 欧美乱人伦中文字幕在线| 日韩不卡视频在线观看| 国产欧美日韩一区二区三区| 欧美成免费一区二区视频| 欧美深夜福利视频| 精品无人区卡一卡二卡三乱码免费卡 | 91精品视频一区二区| 久久99精品国产99久久| 中出一区二区| 久久久国产欧美| 99久久免费精品| 国内偷拍精品视频| 欧美日韩一区二区不卡| 亚洲欧美综合在线观看| 美女av一区二区三区| 日韩高清不卡| 欧美日韩一区在线播放| 亚洲香蕉网站| 亚洲视频在线不卡| 国产精品视频线看| 探花视频在线观看| 欧美精品一区二区三区在线播放| huan性巨大欧美| 成人免费网站在线看| 成人羞羞网站| 天堂中文视频在线| 2024国产精品视频| 久久草视频在线| 精品国产精品一区二区夜夜嗨 | 97色在线视频观看| 亚洲一二av| 国产成人一区二区三区别| 韩国一区二区三区| 日本 欧美 国产| 欧美视频一区二区| 国产精品视频二区三区| 国产999精品| 久久最新网址| 色诱视频在线观看| 国产夜色精品一区二区av| 久久夜色精品国产噜噜亚洲av| 亚洲精品wwww| 精精国产xxx在线视频app| 精品国产乱码久久久久| 亚洲人成久久| 无码成人精品区在线观看| 亚洲一二三级电影| 成人久久久精品国产乱码一区二区| 美女精品视频一区| 日本伊人久久| 免费特级黄色片| av成人老司机| 亚洲欧美偷拍一区| 一区二区三区www| 欧美一级做a| 一道本在线观看视频| 国产一区二区三区美女| 免费在线看黄网址| 亚洲福利小视频| 亚洲v.com| 日韩免费三级| 激情综合色播激情啊| 好吊色视频在线观看| 亚洲电影天堂av| 三级成人黄色影院| 一区二区三区视频| 国产福利91精品一区二区三区| 日产欧产va高清| 亚洲视频在线看| 色综合一区二区日本韩国亚洲| 91精品国产毛片武则天| 99视频精品全部免费在线| 一级特黄免费视频| 欧美精品手机在线| 亚洲宅男网av| 韩国一区二区在线播放| 亚洲国产日韩综合久久精品| 水中色av综合| 成人精品福利视频| 在线播放不卡| 亚洲一二三四视频| 欧美xingq一区二区| 另类激情视频| 久久久久久久久久久久久国产| 成人v精品蜜桃久久一区| 精品久久久久久久久久久国产字幕| 色狠狠久久aa北条麻妃 | 日韩wuma| 丁香五精品蜜臀久久久久99网站| 国产剧情在线视频| 欧美尺度大的性做爰视频| 宅男在线一区| 粗大的内捧猛烈进出视频| 色欲综合视频天天天| 成人三级网址| 视频一区二区三区在线观看 | 欧美日韩精品免费| 51漫画成人app入口| 亚洲欧洲三级| 97久久久精品综合88久久| 96亚洲精品久久久蜜桃| 国模精品一区二区三区色天香|