k8s nodeport下訪問請求未被分發到所有node的排錯(轉)


原文 https://www.myf5.net/post/2343.htm

現象:

從內部某個pod的容器里直接訪問service的cluster地址,請求可以被正常轉發到各個node上的pod里

但是從外部網絡,訪問nodeport發布的服務,則發現請求不能被轉發到其他node上

排錯發現,請求沒有被轉發到其他node的物理接口,說明問題出在接受請求的那台node本身上

查看iptables filter表發現,轉發數據包匹配一條docker創建的規則導致丟棄

 

forward鏈中的 第1,2規則都導致丟棄

強制增加iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT 規則后,問題解決

但重啟會失效,持久化的一個方法見此文最后 http://www.cnadn.net/post/2304.htm

 

ps:筆者在網上找了一堆資料,基本沒有提及過nodeport轉發不通的問題,因為目前所有的iptables規則都是k8s安裝完后自動生成,沒有做過任何修改, 從A機器訪問kube-proxy的nodeport能轉發到B機器的 targetport, 但是從外網訪問A機器的kube-proxy的nodeport就無法轉發出去,集群網絡是通的,但就是無法轉發,后面看到此文加上iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT 果然可行


免責聲明!

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



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