k8s - flannel無法跨主機ping通pod的解決方案(騰訊雲)


集群信息

  1. 一台騰訊雲輕量應用服務器,(CPU: 2核 | 內存: 4GB | 硬盤:80GB),master
  2. 一台騰訊雲服務器,(CPU: 1核 | 內存: 2GB | 硬盤:50GB),node1
  3. 操作系統皆為Ubuntu 20.04 LTS x86_64
  4. 這里有個大坑,輕量應用服務器和普通雲服務器內網不互通,互通要參考內網互聯
  5. 第四點只是解決了master和node互相能ping通內網ip,並不代表k8s集群部署后,能互相ping通pod id(虛擬子網)

master 無法ping,curl node1的pod id

在node1,通過抓包發現,其實是可以收到請求並且apply,發現master收不到。確認問題出現在master

tcmpdump -i flannel.1

我用的是flannel的vxlan的網絡解決方案,然后參考
https://stackoverflow.com/a/51850070/5955399
https://github.com/flannel-io/flannel/blob/master/Documentation/troubleshooting.md#firewalls

When using vxlan backend, kernel uses UDP port 8472 for sending encapsulated packets.

解決辦法

在雲后台防火牆(有些叫安全組)規則打開8472 UDP的入規則就正常了

總結

  1. 是防火牆的規則問題,因為虛擬子網依靠flannel,把flannel的端口開了就行了。
  2. 騰訊雲的普通雲服務器CVM默認允許所有端口的入規則,但是騰訊雲的輕量應用是要自己設置防火牆端口規則的。
  3. 一直奮戰了10小時,搜索了無數中英文資料,重裝集群無數次,終於成功了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM