k8s集群flannel问题之telnet node节点开放端口Connect timeout情况
前段时间在腾讯云clb上面的端口健康检测突然出现一堆异常,去手动检测时现实一切正常。去咨询了腾讯云工程师,他们对于端口检测处理方式是设置sysctl.conf中的几个参数,参数如下
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 0
在修改完参数之后,发现问题并没有解决。
确认针对端口健康检测的一些设置没有错误的话,那么问题肯定就是出自我这边的服务器上。
排查思路:
- 首先检查集群node、pod的状态,发现节点和pod的状态完全正常,服务也是可以正常访问的(ps:一个大意导致了伏笔);
- 去查集群中所有组件的日志未发现什么有用的信息;
- 检查了集群中的几个节点的内部通讯也是没有问题的;
那既然是端口检测出了问题,我就去测试下端口是不是能够正常访问的。这里选择了比较方便快捷的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情况相关推荐
- Addon SuperEdge 让原生 K8s 集群可管理边缘应用和节点
作者 梁豪,腾讯TEG工程师,云原生开源爱好者,SuperEdge 开发者,现负责TKEX-TEG容器平台运维相关工作. 王冬,腾讯云TKE后台研发工程师,专注容器云原生领域,SuperEdge 核心 ...
- 云服务器搭建k8s集群的巨坑,node间网络不通问题
最近用腾讯云服务器搭建了k8s集群,踩到一个巨坑.现象就是服务正常搭建完毕,各个必须的pod也处于ready状态,但是node不能访问别的node的pod.搭建的示例tomcat的demo也不能通过外 ...
- 使用rke安装高可用k8s集群
文章目录 使用rke安装高可用k8s集群 rke 增加和移除节点 彻底清理rke节点 使用rke安装高可用k8s集群 服务器rke集群节点角色规划 用户 主机名 内网IP SSH端口 系统 rke 角 ...
- 从零开始在ubuntu上安装和使用k8s集群及报错解决
文章目录 安装docker 安装kubernetes 配置k8s集群 配置虚拟机网络 配置Master节点的k8s网络 拉取k8s需要的镜像 启动 kubeadm 和 kubelet 配置 node节 ...
- kubeadm 安装 k8s 集群
文章目录 环境 三台 CentOS Version Ready 关闭所有防火墙 禁用 Selinux 关闭 swap 加入 host 信息 相关组件安装 Docker 安装 `kubelet`.`ku ...
- 二进制包方式部署k8s集群
1.准备环境 虚拟机操作系统: Centos7 角色 IP 组件 Master 192.168.150.20 kube-apiserver,kube-controller-manager,kube - ...
- Centos7 安装部署Kubernetes(k8s)集群过程
1.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.9 Docker version 20.10.12 x86_64 2.前言 如下图描述了软件部 ...
- 使用kubeadm安装k8s集群的完整步骤(k8sv15.1)
一.创建虚拟机 首先使用vmware15 pro创建了4台centos7虚拟机,其中,3台用来组建k8s集群,1台为master节点,2台为node节点, 剩下的一台用来安装harbor配置私有仓库( ...
- 使用kubeadm快速部署一套稳定的K8S集群
文章目录 一. 操作系统初始化配置 1.1 设置主机名 1.2 设置hosts解析主机名 1.3 关闭SELinux和防火墙 1.4 关闭swap 1.5 设置系统参数 1.6 设置节点间的SSH免密 ...
最新文章
- 黑客使用合法工具接管 Docker 和 Kubernetes 平台
- HelloX项目github协同开发指南
- 【C++基础 09】避免对象的拷贝
- 本特利3500_本特利技术控的自我修养之 轴位移探头安装
- Web前端笔记-画布拖动及放缩(two.js)
- 移动端webapp开发必备知识
- ajax该什么时候用
- Hibernate Log4j日志记录
- C#LeetCode刷题之#557-反转字符串中的单词 III(Reverse Words in a String III)
- C语言指针作为参数的传递问题
- Android 驱动(5)---MTK 平台分区表
- 良好的树结构设计会让开发更舒爽
- 从一开始,说出事java匿名内部类
- canvas生成图片toDataURL报错的原因和解决方法
- 在Linux下使用命令发送邮件附件
- 学生选课系统软件测试报告,学生选课系统-软件可用性测试实验
- 现代密码学常用符号总结
- 苹果开发者账号的那些坑
- 计算机网络期末考试知识点汇总
- 云管理平台是个什么东西