硬件环境:

两台物理机:

172.16.114.210(master主机)

172.16.114.211(node主机)

软件环境:

kubernetes 1.5.2

flannel 0.5.5

问题描述:

部署了一个mysql的NodePort服务,指定nodePort端口为30010,telnet 172.16.114.211 30010是通的,但是telnet 172.16.114.210 30010是不通的。

问题分析

查看172.16.114.210主机的情况如下,

1、30010端口已经监听

2、iptables -S -t nat | grep mysql,nat表规则均正常

3、iptables -S -t filter 如下:

[root@localhost ~]# iptables -S -t filter
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-N KUBE-SERVICES
-A INPUT -i virbr0 -p udp -m udp --dport -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport -j ACCEPT
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -d 192.168.122.0/ -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/ -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A OUTPUT -o virbr0 -p udp -m udp --dport -j ACCEPT
-A DOCKER-ISOLATION -j RETURN

有一条规则-P FORWARD DROP,意思是本机默认的转发规则是丢弃(DROP),因为nodeport服务本身是部署在node主机上的,telnet master主机时,会根据iptables的规则,将该请求转发给node主机上的pod,所以当master主机的默认转发规则是丢弃时,就出现了telnet master主机 加nodeport端口不通的情况。

解决办法

修改master主机上的iptables规则,将默认转发的action修改为accept,执行命令为iptables -P FORWARD ACCEPT,修改后规则如下:

[root@localhost ~]# iptables -P FORWARD ACCEPT
[root@localhost ~]# iptables -S -t filter
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-N KUBE-SERVICES
-A INPUT -i virbr0 -p udp -m udp --dport -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport -j ACCEPT
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -d 192.168.122.0/ -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/ -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A OUTPUT -o virbr0 -p udp -m udp --dport -j ACCEPT
-A DOCKER-ISOLATION -j RETURN

此时在telnet master主机加nodeport端口,就通了

telnet master主机的NodePort服务不通的问题的更多相关文章

  1. 两台主机之间单向Ping不通的问题

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...

  2. 没有部署ingress pod的woker节点telnet slb的80 443端口不通

    一,问题描述 没有部署ingress pod的woker节点telnet slb的80 443端口不通 二,解决办法 方法一:改用svc地址调用 方法二:让每台woker节点都部署ingress po ...

  3. 13 | 实战:单机如何实现管理百万主机的心跳服务? https://time.geekbang.org/column/article/240656

    13 | 实战:单机如何实现管理百万主机的心跳服务? https://time.geekbang.org/column/article/240656

  4. 基于多主机的Web服务

    [Centos7.4版本] !!!测试环境我们首关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~ ...

  5. .NET Core 中的通用主机和后台服务

    简介 我们在做项目的时候, 往往要处理一些后台的任务. 一般是两种, 一种是不停的运行,比如消息队列的消费者.另一种是定时任务. 在.NET Framework + Windows环境里, 我们一般会 ...

  6. telnet命令判断端口是否通不通

    以上得出结论80端口不通 如果连接成功,想要退出telnet的话,ctrl+],然后输入quit 查看iptables vi /etc/sysconfig/iptables   #编辑防火墙配置文件  ...

  7. kubenetes master重启以后,服务异常排查

    k8s集群环境:三台机器,一台master,三个node(每台都安装node服务) 问题藐视:重启的时候,发现master的服务都能正常启动,但是就是不好使,看/var/log/message日志也没 ...

  8. Nginx代理实现内网主机访问公网服务

    通过Nginx代理实现内网主机访问公网和接口服务 1.需求: m2.test.com为公司测试环境的微信测试域名,因为要调用微信服务接口需要访问外网,现通过Nginx代理现实此功能. 2.环境如下: ...

  9. spring-cloud-starter-hystrix(断路器)服务不通或者调用失败后的错误处理和回调

    雪崩效应 在微服务架构中通常会有多个服务层调用,大量的微服务通过网络进行通信,从而支撑起整个系统.各个微服务之间也难免存在大量的依赖关系.然而任何服务都不是100%可用的,网络往往也是脆弱的,所以难免 ...

随机推荐

  1. Windows安装和配置Tomcat

    1 从http://tomcat.apache.org下载Tomcat压缩包,我这里下的版本是7.0.67.   2 将Tomcat压缩包解压缩到任意路径下,我这里的解压缩路径为E:\tomcat-7 ...

  2. mysql5.7用户密码策略问题

    密码策略问题 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 查看 mysql 初 ...

  3. [译]ES读写文档时shard-replication模型

    官网页面:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-replication.html 本文是对官网页面的 ...

  4. Lidgren.Network – an introduction to networking in C# games

    Lidgren.Network – an introduction to networking in C# games http://genericgamedev.com/tutorials/lidg ...

  5. Android开发 之 我的jar包引用方法

    1.在工程上名上右键->Build Path ->Configure Build Path 2.在Libraries选项卡中,选择右侧的Add External JARs,然后选择要导入的 ...

  6. 两种方法连接MySql数据库

    .用MySQLDriverCS连接MySQL数据库 先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中. ...

  7. 算法笔记_116:算法集训之代码填空题集三(Java)

     目录 1 数组转置 2 文件管理 3 显示为树形 4 杨辉三角系数 5 圆周率与级数 6 整数翻转 7 自行车行程 8 祖冲之割圆法 9 最大5个数 10 最大镜像子串   1 数组转置 编写程序将 ...

  8. ionic 隐藏header-ionic中隐藏头部header

    ionic 中隐藏头部header 通过 hide-nav-bar="true" 来实现 <ion-view hide-nav-bar="true"> ...

  9. 《Java并发编程的艺术》读书笔记:等待/通知机制

    看这本书之前,对wait和notify认识大概就是,调用wait的线程A堵塞之后,一旦另外有线程调用notify方法.线程A会立马从wait方法处返回.看完这本书后.发现自己的认识实在太肤浅了.... ...

  10. tortoisesvn帮助手册

    http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/index.html