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

现象:

从内部某个pod的容器里直接访问service的cluster地址,请求可以被正常转发到各个node上的pod里

但是从外部网络,访问nodeport发布的服务,则发现请求不能被转发到其他node上

排错发现,请求没有被转发到其他node的物理接口,说明问题出在接受请求的那台node本身上

查看iptables filter表发现,转发数据包匹配一条docker创建的规则导致丢弃

[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规则都导致丢弃

强制增加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 果然可行

k8s nodeport下访问请求未被分发到所有node的排错(转)的更多相关文章

  1. k8s Nodeport方式下service访问,iptables处理逻辑(转)

    原文 https://www.myf5.net/post/2330.htm k8s Nodeport方式下service访问,iptables处理逻辑 2017年07月11日 0条评论 976次阅读 ...

  2. win7下IIS错误:"无法访问请求的页面,因为该页的相关配置数据无效"的解决方法(转)

    今天新装win7,然后在IIS下布署了一个网站,布署完成后运行,提示如下错误:HTTP 错误 500.19 - Internal Server Error无法访问请求的页面,因为该页的相关配置数据无效 ...

  3. 【原创】K8S环境下研发如何本地调试?kt-connect使用详解

    K8S环境下研发如何本地调试?kt-connect使用详解 背景 注:背景有点啰嗦,讲讲一路走来研发本地调试的变化,嫌烦的可以直接跳过,不影响阅读. 2019年 我在的公司当时是个什么情况,只有两个J ...

  4. 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”

    windows 2008下IIS7 安装ASP.NET 遇到如下错误: HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. ...

  5. SharePoint 2013 开启访问请求

    1.通常,我们进入SharePoint 2013站点,如果没权限会提示该站点未被共享,而没有切换账号或者申请访问,实在是很流氓:其实,SharePoint为我们提供了访问请求页面,但是可能需要手动开启 ...

  6. win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面

    错误一: HTTP Error 500.19 - Internal Server Error配置错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的 (ov ...

  7. HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。

    HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginReques ...

  8. IE10-IE11在NET4.0下出现“__doPostBack未定义”解决方案

    IE10在NET4.0下出现"__doPostBack未定义"的办法 参考文章: http://blogs.msdn.com/b/scott_hanselman/archive/2 ...

  9. iis发布网站问题-由于权限不足而无法读取配置文件,无法访问请求的页面

    错误一: HTTP Error 500.19 - Internal Server Error 配置错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的 (o ...

随机推荐

  1. asp.net,根据gridview 中checkbox复选框选中的行对数据库进行操作

    在asp.net中,使用checkbox,对gridview添加复选框. 多选数据行后,根据已选数据,对原数据进行多条语句查询. string sql = "Select * from 表 ...

  2. linux下jvm优化、tomcat调优

    系统环境:jdk1.8,apache-tomcat-8.5.35 一.jvm优化 进入 bin/catalina.sh,修改JAVA_OPTS配置: JAVA_OPTS="-server - ...

  3. iOS .tbd

    http://stackoverflow.com/questions/31450690/why-xcode-7-shows-tbd-instead-of-dylib http://www.jiansh ...

  4. HQL知识点一

    Hive创表语法 create [external] table [if not exists] [db_name.]table_name (col1_name data_type,col2_name ...

  5. webpack前端开发环境搭建

    要搭建webpack开发环境,首先要安装NodeJS,后面的过程均在NodeJS已经安装的基础上进行. 1. 首先建立一个工程目录,命名为,其目录结构如下: 其中dist目录用于存放生成的文件,src ...

  6. chm提取

    Python读写CHM文件 7z 可以将chm解包为HTML

  7. Vector的用法

    vector容器是笔试时最经常用到的容器,它实际是一个类模板,它所具有一些成员函数我们必须熟练使用,这样才会加快编程速度. 首先加头文件并定义: #include<vector> vect ...

  8. HTML下标签之应用

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  9. 你好git

    在老师的推荐下,这次我第一次打开了github,作为一个菜鸟,对于这些功能还是有些新奇的,所以也摸索了很久. GIthub是一个基于git的社会代码分享社区,可以建立公开的,免费的分享代码,也可以关注 ...

  10. 对spring框架的理解

    spring框架的两大核心理念就是IOC和AOP,在面试的时候经常会被问到你对spring的理解.下面大致的说一下我对spring的理解. 一.IoC 1.1.什么是IoC 众所周知,IoC就是控制反 ...