天天看點

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

背景

基于阿裡雲自己手動搭建了幾次k8s叢集,采用flannel VXLAN 建構的Overlay覆寫網絡, (關閉了安全組,route路由表設定正常 iptables規則都開啟Accept ,主機上ip_forward功能正常開啟)均出現k8s跨節點 pod網絡不通,k8s叢集中主控端無法ping通跨主機的pod id。

備注:(網絡上也有類似問題,大多數是通過iptables轉發是不是有限制之類的解決,不生效)

兩台節點k8s叢集:

主控端ip位址為:

10.136.1.251 flannel 配置設定ip 網段為10.244.0.0/24

10.136.1.252 flannel 配置設定ip 網段為 10.244.1.0 /24

大緻現象

1、主控端之間網絡是通的

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod
k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

2、主控端可以 ping 通部署在目前主機上的pod ,去ping 部署在其他主控端pod ip 不通

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

問題排查

  • ifconfig配置 是否有問題

節點一

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

節點二

ifconfig配置

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

網段配置基本是正常的,cni0、flannel.1 、eth0 網絡裝置正常啟動 ,都已經配置設定了正常的ip 子網這塊也都配置正常。

  • 檢視主控端路由是否正常

    節點一路由表:

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

節點二路由表:

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

flannel路由配置正常

  • iptables規則是否配置正常

節點一:

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

節點二:

k8s基于flannel VXLAN模式網絡無法跨主機ping通其他節點上pod

iptable 規則配置沒問題,基本都是accept

  • 網絡抓包

使用tcpdump 分别抓去flannel.1、eth0 網卡,發現資料包從eth0出去後 沒有響應 對應節點并沒有收到包

問題結論:

在排查過程中:

  • flannel.1網段設定正确 ifconfig。
  • route -n路由表配置正确
  • iptable -L -N檢視 沒有相關Deny
  • FDB都正常

,是以預計到是雲服務廠商安全組設定的問題,在傳輸層被攔截了,最終定位到是阿裡雲伺服器企業安全組配置的問題,在傳輸層就進行了攔截,導緻發出去的包沒有回來被deny了 ,是以這塊去開啟安全組就解決了問題。

附錄,這次排查問題積累了不少k8s網絡經驗,有相關問題的朋友可以留言咨詢,大家一起讨論

繼續閱讀