集群信息
- 一台騰訊雲輕量應用服務器,(CPU: 2核 | 內存: 4GB | 硬盤:80GB),master
- 一台騰訊雲服務器,(CPU: 1核 | 內存: 2GB | 硬盤:50GB),node1
- 操作系統皆為Ubuntu 20.04 LTS x86_64
- 這里有個大坑,輕量應用服務器和普通雲服務器內網不互通,互通要參考內網互聯。
- 第四點只是解決了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的入規則就正常了
總結
- 是防火牆的規則問題,因為虛擬子網依靠flannel,把flannel的端口開了就行了。
- 騰訊雲的普通雲服務器CVM默認允許所有端口的入規則,但是騰訊雲的輕量應用是要自己設置防火牆端口規則的。
- 一直奮戰了10小時,搜索了無數中英文資料,重裝集群無數次,終於成功了!