k8s nodeport下访问请求未被分发到所有node的排错(转)
原文 https://www.myf5.net/post/2343.htm
現(xiàn)象:
從內(nèi)部某個pod的容器里直接訪問service的cluster地址,請求可以被正常轉(zhuǎn)發(fā)到各個node上的pod里
但是從外部網(wǎng)絡(luò),訪問nodeport發(fā)布的服務(wù),則發(fā)現(xiàn)請求不能被轉(zhuǎn)發(fā)到其他node上
排錯發(fā)現(xiàn),請求沒有被轉(zhuǎn)發(fā)到其他node的物理接口,說明問題出在接受請求的那臺node本身上
查看iptables filter表發(fā)現(xiàn),轉(zhuǎn)發(fā)數(shù)據(jù)包匹配一條docker創(chuàng)建的規(guī)則導(dǎo)致丟棄
[root@docker3 ~]# iptables -nL -v --line-number Chain INPUT (policy ACCEPT 525 packets, 70924 bytes) num pkts bytes target prot opt in out source destination 1 258K 33M KUBE-FIREWALL all -- * * 0.0.0.0/0 0.0.0.0/0 2 259K 33M KUBE-SERVICES all -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes service portals */ Chain FORWARD (policy DROP 1 packets, 64 bytes) num pkts bytes target prot opt in out source destination 1 1657 205K DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0 2 1657 205K DOCKER-ISOLATION all -- * * 0.0.0.0/0 0.0.0.0/0 3 790 132K ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 4 35 2224 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0 5 818 70064 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0 6 0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0 7 35 2224 ACCEPT all -- !docker0 docker0 0.0.0.0/0 0.0.0.0/0| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@docker3 ~]# iptables -nL -v --line-number Chain INPUT (policy ACCEPT 525 packets, 70924 bytes) num?? pkts bytes target???? prot opt in???? out???? source?????????????? destination???????? 1???? 258K?? 33M KUBE-FIREWALL??all??--??*??????*?????? 0.0.0.0/0????????????0.0.0.0/0?????????? 2???? 259K?? 33M KUBE-SERVICES??all??--??*??????*?????? 0.0.0.0/0????????????0.0.0.0/0????????????/* kubernetes service portals */ Chain FORWARD (policy DROP 1 packets, 64 bytes) num?? pkts bytes target???? prot opt in???? out???? source?????????????? destination???????? 1???? 1657??205K DOCKER-USER??all??--??*??????*?????? 0.0.0.0/0????????????0.0.0.0/0?????????? 2???? 1657??205K DOCKER-ISOLATION??all??--??*??????*?????? 0.0.0.0/0????????????0.0.0.0/0?????????? 3??????790??132K ACCEPT???? all??--??*??????docker0??0.0.0.0/0????????????0.0.0.0/0????????????ctstate RELATED,ESTABLISHED 4?????? 35??2224 DOCKER???? all??--??*??????docker0??0.0.0.0/0????????????0.0.0.0/0?????????? 5??????818 70064 ACCEPT???? all??--??docker0 !docker0??0.0.0.0/0????????????0.0.0.0/0?????????? 6????????0???? 0 ACCEPT???? all??--??docker0 docker0??0.0.0.0/0????????????0.0.0.0/0?????????? 7?????? 35??2224 ACCEPT???? all??--??!docker0 docker0??0.0.0.0/0????????????0.0.0.0/0 |
?
forward鏈中的 第1,2規(guī)則都導(dǎo)致丟棄
強(qiáng)制增加iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT 規(guī)則后,問題解決
但重啟會失效,持久化的一個方法見此文最后?http://www.cnadn.net/post/2304.htm
?
ps:筆者在網(wǎng)上找了一堆資料,基本沒有提及過nodeport轉(zhuǎn)發(fā)不通的問題,因?yàn)槟壳八械膇ptables規(guī)則都是k8s安裝完后自動生成,沒有做過任何修改, 從A機(jī)器訪問kube-proxy的nodeport能轉(zhuǎn)發(fā)到B機(jī)器的 targetport, 但是從外網(wǎng)訪問A機(jī)器的kube-proxy的nodeport就無法轉(zhuǎn)發(fā)出去,集群網(wǎng)絡(luò)是通的,但就是無法轉(zhuǎn)發(fā),后面看到此文加上iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT 果然可行
轉(zhuǎn)載于:https://www.cnblogs.com/devilwind/p/8891671.html
總結(jié)
以上是生活随笔為你收集整理的k8s nodeport下访问请求未被分发到所有node的排错(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webservice服务器端获取requ
- 下一篇: python程序设计——函数设计与调用