前段时间在腾讯云clb上面的端口健康检测突然出现一堆异常,去手动检测时现实一切正常。去咨询了腾讯云工程师,他们对于端口检测处理方式是设置sysctl.conf中的几个参数,参数如下

net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 0

在修改完参数之后,发现问题并没有解决。
确认针对端口健康检测的一些设置没有错误的话,那么问题肯定就是出自我这边的服务器上。

排查思路:

  1. 首先检查集群node、pod的状态,发现节点和pod的状态完全正常,服务也是可以正常访问的(ps:一个大意导致了伏笔);
  2. 去查集群中所有组件的日志未发现什么有用的信息;
  3. 检查了集群中的几个节点的内部通讯也是没有问题的;

那既然是端口检测出了问题,我就去测试下端口是不是能够正常访问的。这里选择了比较方便快捷的telnet。
果然,使用telnet的登陆端口的时候出现了Connect timeout(ps:由于当时没有做好记录,这里只能模拟还原下)

[root@localhost ~]# telnet 192.168.159.129 5601
Trying 192.168.159.129...
telnet: connect to address 192.168.159.129: Connection timed out

偶尔还会出现时通时不通的问题。关于这个问题我又查了好久。
后来去咨询了下,发现有一个node的所有服务都是无法访问的。于是去查了下集群之间的网络发现其他node节点没有通往出现问题node的路由。

[root@k8s-w2 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
172.18.39.0     172.18.39.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.42.0     172.18.42.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.56.0     172.18.56.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.83.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
192.168.159.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@k8s-w2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:a9:29:ac brd ff:ff:ff:ff:ff:ffinet 192.168.159.133/24 brd 192.168.159.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::8f09:17c2:30ca:6e5f/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft foreverinet6 fe80::166d:3ad1:c8fa:16ef/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft foreverinet6 fe80::76f:987b:2d68:f60c/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft forever
3: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group defaultlink/ether 92:48:b3:78:71:de brd ff:ff:ff:ff:ff:ffinet 172.18.83.0/32 scope global flannel.1valid_lft forever preferred_lft foreverinet6 fe80::9048:b3ff:fe78:71de/64 scope linkvalid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group defaultlink/ether 02:42:58:35:85:7d brd ff:ff:ff:ff:ff:ffinet 172.18.83.1/24 brd 172.18.56.255 scope global docker0valid_lft forever preferred_lft forever

其他机器以一台为例

[root@k8s-m1 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
172.18.39.0     172.18.39.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.42.0     172.18.42.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.56.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
192.168.159.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0

由此可以看到w2机器上有通往集群中其他机器的路由,但是其他几台机器并没有通向w2机器上的路由,而master节点上没有通向w2上的路由,网络上是连接不到那台机器的。
至于服务没有影响是因为yml文件里面,定义的副本数是2,所以只要两个pod有一个是能够提供服务的,那么服务还是能访问到,只不过有时候需要手动刷新,不然是加载不出来的。
发现问题后,我首先重启了所有node的flannel,重启后发现出现问题的node节点flannel和docker的网络不在同一网段

[root@k8s-m1 ~]# systemctl  restart flannel
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:a9:29:ac brd ff:ff:ff:ff:ff:ffinet 192.168.159.133/24 brd 192.168.159.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::8f09:17c2:30ca:6e5f/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft foreverinet6 fe80::166d:3ad1:c8fa:16ef/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft foreverinet6 fe80::76f:987b:2d68:f60c/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft forever
3: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group defaultlink/ether 92:48:b3:78:71:de brd ff:ff:ff:ff:ff:ffinet 172.18.90.0/32 scope global flannel.1valid_lft forever preferred_lft foreverinet6 fe80::9048:b3ff:fe78:71de/64 scope linkvalid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group defaultlink/ether 02:42:58:35:85:7d brd ff:ff:ff:ff:ff:ffinet 172.18.56.1/24 brd 172.18.56.255 scope global docker0valid_lft forever preferred_lft forever

于是重启flannel和docker

[root@k8s-w2 ~]#systemctl restart flannel docker

这时再来查看网段和route发现都有了,端口检测过会也全部显示正常了。

[root@k8s-m1 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
172.18.39.0     172.18.39.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.42.0     172.18.42.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.90.0     172.18.56.0     255.255.255.0   UG    0      0        0 flannel.1
172.18.83.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
192.168.159.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@k8s-w2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:a9:29:ac brd ff:ff:ff:ff:ff:ffinet 192.168.159.133/24 brd 192.168.159.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::8f09:17c2:30ca:6e5f/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft foreverinet6 fe80::166d:3ad1:c8fa:16ef/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft foreverinet6 fe80::76f:987b:2d68:f60c/64 scope link tentative noprefixroute dadfailedvalid_lft forever preferred_lft forever
3: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group defaultlink/ether 92:48:b3:78:71:de brd ff:ff:ff:ff:ff:ffinet 172.18.90.0/32 scope global flannel.1valid_lft forever preferred_lft foreverinet6 fe80::9048:b3ff:fe78:71de/64 scope linkvalid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group defaultlink/ether 02:42:58:35:85:7d brd ff:ff:ff:ff:ff:ffinet 172.18.90.1/24 brd 172.18.56.255 scope global docker0valid_lft forever preferred_lft forever

这就是本地解决flannel网络问题的基本思路及过程,希望对大家有所帮助。

k8s集群flannel问题之telnet node节点开放端口Connect timeout情况相关推荐

  1. Addon SuperEdge 让原生 K8s 集群可管理边缘应用和节点

    作者 梁豪,腾讯TEG工程师,云原生开源爱好者,SuperEdge 开发者,现负责TKEX-TEG容器平台运维相关工作. 王冬,腾讯云TKE后台研发工程师,专注容器云原生领域,SuperEdge 核心 ...

  2. 云服务器搭建k8s集群的巨坑,node间网络不通问题

    最近用腾讯云服务器搭建了k8s集群,踩到一个巨坑.现象就是服务正常搭建完毕,各个必须的pod也处于ready状态,但是node不能访问别的node的pod.搭建的示例tomcat的demo也不能通过外 ...

  3. 使用rke安装高可用k8s集群

    文章目录 使用rke安装高可用k8s集群 rke 增加和移除节点 彻底清理rke节点 使用rke安装高可用k8s集群 服务器rke集群节点角色规划 用户 主机名 内网IP SSH端口 系统 rke 角 ...

  4. 从零开始在ubuntu上安装和使用k8s集群及报错解决

    文章目录 安装docker 安装kubernetes 配置k8s集群 配置虚拟机网络 配置Master节点的k8s网络 拉取k8s需要的镜像 启动 kubeadm 和 kubelet 配置 node节 ...

  5. kubeadm 安装 k8s 集群

    文章目录 环境 三台 CentOS Version Ready 关闭所有防火墙 禁用 Selinux 关闭 swap 加入 host 信息 相关组件安装 Docker 安装 `kubelet`.`ku ...

  6. 二进制包方式部署k8s集群

    1.准备环境 虚拟机操作系统: Centos7 角色 IP 组件 Master 192.168.150.20 kube-apiserver,kube-controller-manager,kube - ...

  7. Centos7 安装部署Kubernetes(k8s)集群过程

    1.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.9 Docker version 20.10.12 x86_64 2.前言 如下图描述了软件部 ...

  8. 使用kubeadm安装k8s集群的完整步骤(k8sv15.1)

    一.创建虚拟机 首先使用vmware15 pro创建了4台centos7虚拟机,其中,3台用来组建k8s集群,1台为master节点,2台为node节点, 剩下的一台用来安装harbor配置私有仓库( ...

  9. 使用kubeadm快速部署一套稳定的K8S集群

    文章目录 一. 操作系统初始化配置 1.1 设置主机名 1.2 设置hosts解析主机名 1.3 关闭SELinux和防火墙 1.4 关闭swap 1.5 设置系统参数 1.6 设置节点间的SSH免密 ...

最新文章

  1. 黑客使用合法工具接管 Docker 和 Kubernetes 平台
  2. HelloX项目github协同开发指南
  3. 【C++基础 09】避免对象的拷贝
  4. 本特利3500_本特利技术控的自我修养之 轴位移探头安装
  5. Web前端笔记-画布拖动及放缩(two.js)
  6. 移动端webapp开发必备知识
  7. ajax该什么时候用
  8. Hibernate Log4j日志记录
  9. C#LeetCode刷题之#557-反转字符串中的单词 III(Reverse Words in a String III)
  10. C语言指针作为参数的传递问题
  11. Android 驱动(5)---MTK 平台分区表
  12. 良好的树结构设计会让开发更舒爽
  13. 从一开始,说出事java匿名内部类
  14. canvas生成图片toDataURL报错的原因和解决方法
  15. 在Linux下使用命令发送邮件附件
  16. 学生选课系统软件测试报告,学生选课系统-软件可用性测试实验
  17. 现代密码学常用符号总结
  18. 苹果开发者账号的那些坑
  19. 计算机网络期末考试知识点汇总
  20. 云管理平台是个什么东西

热门文章

  1. 付临门上海总运营中心董事长谢正建倡议捐赠闲置手机
  2. 多媒体——视频——使用摄像机录制视频
  3. 如何快速通过微软PL-100考试
  4. 如何解开和反编译思科cisco的交换机固件
  5. android/iPhone:如何从browser直接打开应用程序或者打开应用商店(如果没有应用程序)
  6. 【NOIP模拟】玛雅文字
  7. CentOS7下Samba的安装与配置
  8. 几何画板手机版_几何画板手机版
  9. 画数轴的步骤_如何用几何画板画数轴?
  10. 【MFC基础】13s时间控件DateTime Picker