当前位置: 首页 > article >正文

K8S集群主机网络端口不通问题排查

一、环境

k8s:   v1.23.6

docker:          20.10.14

问题和故障现象:devops主机集群主机节点到端口8082不通(网络策略已经申请,并且网络策略已经实施完毕),而且网络实施人员再次确认,网络策略配置没有问题,端口却依然不通。

解决简介

  1. 通过traceroute定位
  2. 通过route -n 查看路由表信息
  3. 查看VIP 子网掩码位数
  4. 修改宿主机上的keepalived配置文件
  5. 进入k8s-keepalive容器内部,修改keepalive配置文件
  6. 重启容器k8s-keepalive

二、问题排查

2.1、检查端口不通

检查xxx.xxx.25.226  到目标主机xxx.xxx..60.142 8082 端口不通,也不能ping通。

K8s 集群信息如下:

通过在目标主机上 tcpdump抓包:

tcpdump -i any -nn host xxx.xxx.25.226

也没有抓到源主机 xxx.xxx.25.226的请求数据包

2.2 、网络策略策略实施人员确认

网络策略已经提交工单,并且网络人员已经实施完毕,再次和网络策略实施人员确认,他那边网络策略实施的没有问题。

2.3、通过traceroute 定位分析

感觉有点怪异,没有走网关 xxx.xxx.25.1

2.4、 通过rourt -n 查看本地路由表信息

通过路由表分析,到目标 xxx.xxx.60.142 8082 匹配上了路由表的第二条路由规则,没有经过网关 xxx.xxx.25.1

2.5、 通过ip a 查看

上面红色的IP xxx.xxx.25.226/24是宿主机的地址,下面绿色IP xxx.xxx.25.232/16的是k8s apiserver 高可用使用的VIP ,查看感觉这里的子网掩码16有点特别奇怪,因为这个地址的存在,所以,路由表里面就有了上面的第二条路由规则的添加:

我们从本机到目标地址 xxx.xxx.60.142 8082 的 数据包就匹配上了这条规则,从本机直连,而不通过网关 xxx.xxx.25.1了,但因为我们本地xxx.xxx.25.226/24所在的网络xxx.xxx.25.0/24 显然和我们要访问的目标主机xxx.xxx.60.142/24 所在的网络xxx.xxx.60.0/24 不是同一网络,必须要通过网关xxx.xxx.25.1才行,问题就在这里。

三、问题解决

3.1、 找到 xxx.xxx.25.232/16配置的应用

查看VIP  xxx.xxx.60.142/16 是keepalived容器在使用,这个是apiserver 的高可用配置的VIP,通过3个节点上运行的k8s-keepalive容器实现。

查看容器映射到宿主机的配置信息:

[root@XX-XXpod2-c6-core-25-226 .kube]# cat  /apps/k8s-ha/kconf/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id LVS_1

}

vrrp_script checkhaproxy

{

    script "/opt/check.sh"

    interval 1

    weight -30

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 232

    priority 100

    unicast_src_ip xxx.xxx.25.226

    unicast_peer {

                                        xxx.xxx.25.227

                                xxx.xxx.25.228

                    }

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass "!q12Q!waER43aS"

    }

    virtual_ipaddress {

        xxx.xxx.25.232/16

    }

    track_script

    {

        checkhaproxy

    }

}

通过查看,发现上面的VIP的子网掩码写成了16位了。

先备份3个master节点上的配置文件,把配置文件里面的VIP子网掩码修改为24位。3个节点依次重启k8s-keepaive容器后,通过ip a |grep xxx.xxx 查看,VIP子网掩码依然为为16位.

3.2、 进一步进入到k8s-keepalive容器里面排查定位

在容器里面执行 ps -ef 命令 看下查看到 里面运行的keepalived进程用到的配置文件为:

/usr/local/etc/keepalived/keepalived.conf

查看容器里面的配置文件内容,查看配置文件里面VIP子网掩码修改依然为16位,

bash-5.0# vi /usr/local/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id LVS_1

}

vrrp_script checkhaproxy

{

    script "/opt/check.sh"

    interval 1

    weight -30

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 232

    priority 100

    unicast_src_ip xxx.xxx.25.226

    unicast_peer {

                                        xxx.xxx.25.227

                                xxx.xxx.25.228

                    }

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass "!q12Q!waER43aS"

    }

    virtual_ipaddress {

        xxx.xxx.25.232/16

    }

    track_script

    {

        checkhaproxy

    }

}

看来,修改映射到宿主机的配置文件后,没有用,还需要修改容器里面的配置文件。

3.3 修改容器里面的配置文件后,重启容器

修改完容器里面的配置文件后,重启容器,再次在宿主机上通过 ip a |grep  xxx.xxx

查看 VIP子网掩码为24位了。

路由表也恢复正常了。 

.总结

4.1 遇到类似问题,要学会使用常用命令工具分析,一步一步排查。

4.2 Keepalived容器在使用的时候,修改宿主机配置文件后,还要修改容器里面的配置文件。

http://www.lryc.cn/news/2392255.html

相关文章:

  • 【Elasticsearch】retry_on_conflict
  • Android Cameara2 + MediaRecorder 完成录像功能
  • python打卡day39
  • 3.8.5 利用RDD统计网站每月访问量
  • 尚硅谷redis7 49-51 redis管道之理论简介
  • Spring Boot + MyBatis-Plus实现操作日志记录
  • JavaScript入门基础篇-day03
  • Leetcode-5 好数对的数目
  • openEuler安装MySql8(tar包模式)
  • Opencv实用操作6 开运算 闭运算 梯度运算 礼帽 黑帽
  • 基于python,html,flask,echart,ids/ips,VMware,mysql,在线sdn防御ddos系统
  • Git:现代软件开发的基石——原理、实践与行业智慧·优雅草卓伊凡
  • NLua性能对比:C#注册函数 vs 纯Lua实现
  • 【计算机网络】第2章:应用层—Web and HTTP
  • HarmonyOS 5 应用开发导读:从入门到实践
  • 大数据治理:分析中的数据安全
  • 数字孪生技术赋能西门子安贝格工厂:全球智能制造标杆的数字化重构实践
  • 国内高频混压PCB厂家有哪些?
  • 【图像处理基石】立体匹配的经典算法有哪些?
  • day12 leetcode-hot100-19(矩阵2)
  • 将Java应用集成到CI/CD管道:从理论到生产实践
  • 密钥管理系统在存储加密场景中的深度实践:以TDE透明加密守护文件服务器安全
  • webpack打包基本配置
  • 酷派Cool20/20S/30/40手机安装Play商店-谷歌三件套-GMS方法
  • LabVIEW旋转机械智能监测诊断系统
  • 数据结构 -- 判断正误
  • vue3前端实现一键复制,wangeditor富文本复制
  • 小白畅通Linux之旅-----Linux进程管理
  • 【芯片设计中的跨时钟域信号处理:攻克亚稳态的终极指南】
  • 接地气的方式认识JVM(一)