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.pswp.cn/news/907849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qemu安装risc-V 64

参考这篇文章https://developer.aliyun.com/article/1323996,其中在wsl下面安装可能会报错环境变量中有空格。 # clean_path.sh#!/bin/bash# 备份旧 PATH OLD_PATH"$PATH"# 过滤掉包含空格、制表符、换行的路径 CLEAN_PATH"" IFS: read -ra PA…

python爬虫:RoboBrowser 的详细使用

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、RoboBrowser概述1.1 RoboBrowser 介绍1.2 安装 RoboBrowser1.3 与类似工具比较二、基本用法2.1 创建浏览器对象并访问网页2.2 查找元素2.3 填写和提交表单三、高级功能3.1 处理文件上传3.2 处理JavaScript重定向3.3…

CTFSHOW-WEB-36D杯

给你shell 这道题对我这个新手还是有难度的&#xff0c;花了不少时间。首先f12看源码&#xff0c;看到?view_source&#xff0c;点进去看源码 <?php //Its no need to use scanner. Of course if you want, but u will find nothing. error_reporting(0); include "…

CentOS_7.9 2U物理服务器上部署系统简易操作步骤

近期单位网站革新&#xff0c;鉴于安全加固&#xff0c;计划将原有Windows环境更新到Linux-CentOS 7.9&#xff0c;这版本也没的说&#xff08;绝&#xff09;了&#xff08;版&#xff09;官方停止更新&#xff0c;但无论如何还是被sisi的牵挂着这一大批人&#xff0c;毕竟从接…

LVS-DR高可用-Keepalived

目录 Keepalved双机热备 核心概念 关键组件 工作流程 实例环境 配置keepalived Web服务器配置 Keepalved双机热备 Keepalived双机热备是一种基于VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09;实现的高可用性解决方案&am…

Polar编译码(SCL译码)和LDPC编译码(BP译码)的matlab性能仿真,并对比香农限

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1香农极限 2.2 Polar码编译码原理与SCL译码 2.3 LDPC码编译码原理与BP译码 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2024b仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a…

AI 产品的 MVP 构建逻辑:Prompt 工程 ≠ 产品工程?(实战增补篇)

一. 系统思维&#xff1a;产品工程的全局把控&#xff08;实战增补篇&#xff09; 1. 某智能风控系统的弹性架构实践 某消费金融公司在开发「30 秒极速贷」产品时&#xff0c;面临两大挑战&#xff1a; Prompt 优化困境&#xff1a;传统风控模型依赖 “提取用户信用报告关键…

Unity程序集

对于Unity的程序集&#xff0c;具体内容可以参考Unity官方文档&#xff0c;程序集定义 - 预定义程序集 比如Unity的默认程序集&#xff0c;Assembly-CSharp.dll&#xff0c;还有其他的比如 Assembly-CSharp-Editor.dll&#xff0c;Assembly-CSharp-firstpass.dll 没有指定或…

【架构艺术】平衡技术架构设计和预期的产品形态

近期笔者因为工作原因&#xff0c;开始启动team内部部分技术项目的重构。在事情启动的过程中&#xff0c;内部对于这件事情的定性和投入有一些争论&#xff0c;但最终还是敲定了下来。其中部分争论点主要在于产品形态&#xff0c;因为事情涉及到跨部门合作&#xff0c;所以产品…

React和原生事件的区别

一、核心差异对比表 维度原生事件React 事件绑定语法HTML 属性&#xff08;onclick&#xff09;或 DOM API&#xff08;addEventListener&#xff09;JSX 中使用驼峰式属性&#xff08;onClick&#xff09;绑定位置直接绑定到具体 DOM 元素统一委托到根节点&#xff08;React …

大模型-modelscope下载和使用chatglm3-6b模型

前言 由于官方chatglm3-6b大模型文件下载比较慢&#xff0c;找到国内modelscope代替方案 1.SDK下载 pip install modelscope2.下载大模型文件 ✅方法1:通过pip下载 1.安装 setuptools 在当前使用的 Python 环境中安装 setuptools pip install setuptools2.通过如下命令安…

【unity游戏开发——编辑器扩展】AssetDatabase公共类在编辑器环境中管理和操作项目中的资源

注意&#xff1a;考虑到编辑器扩展的内容比较多&#xff0c;我将编辑器扩展的内容分开&#xff0c;并全部整合放在【unity游戏开发——编辑器扩展】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、AssetDatabase常用API1、创建资源1.1 API1.2 示例 …

css实现文字渐变

在前端开发中&#xff0c;给文字设置渐变色是完全可以实现的&#xff0c;常用的方式是结合 CSS 的 background、-webkit-background-clip 和 -webkit-text-fill-color 属性。下面是一个常见的实现方法&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> …

WSL 开发环境搭建指南:Java 11 + 中间件全家桶安装实战

在WSL&#xff08;Windows Subsystem for Linux&#xff09;环境下一站式安装开发常用工具&#xff0c;能极大提升工作效率。接下来我将分步为你介绍如何在WSL中安装Java 11、Maven、Redis、MySQL、Nacos、RabbitMQ、RocketMQ、Elasticsearch&#xff08;ES&#xff09;和Node.…

vue3: baidusubway using typescript

项目结构&#xff1a; <!--npm install -D tailwindcss-3d BaiduSubwayMap.vue npm install -D tailwindcss postcss autoprefixer--> <template><div class"relative w-full h-screen"><!-- 地图容器 --><div id"subway-container…

【iptables防火墙】-- URL过滤 (Hexstring、IP、DoT和DoH)

在路由器中使用iptables工具对URL地址进行过滤涉及到如下几个方面&#xff0c;hexstring、ip、DoT和DoH。 以过滤www.baidu.com为例 1、DNS阻断 m string --hex-string是iptables中一个以​十六进制格式​定义要匹配的二进制特征并且支持混合明文和二进制数据的模块。由于DN…

mysql-本地编译 MySQL 源码

完全理解你的感受&#xff01;MySQL 源码本地调试确实是一个“坑多”的过程&#xff0c;尤其是当你第一次尝试从源码构建和调试 MySQL 时。但别担心&#xff0c;我来一步步帮你梳理整个流程&#xff0c;并提供一个详细、可操作的指南&#xff0c;让你可以顺利跑起来 MySQL 源码…

深入理解 shared_ptr 与 enable_shared_from_this

在 C++ 的智能指针体系中,std::shared_ptr 是一个非常重要的工具,它通过引用计数机制帮助我们管理动态分配的对象生命周期,避免内存泄漏。然而,在某些情况下,我们可能需要从一个对象内部获取指向自身的 shared_ptr,这时候就需要使用 std::enable_shared_from_this 这个辅…

通义开源视觉感知多模态 RAG 推理框架 VRAG-RL:开启多模态推理新时代

通义实验室的自然语言智能团队&#xff0c;凭借深厚的技术积累与创新精神&#xff0c;成功研发并开源了视觉感知多模态 RAG 推理框架 VRAG-RL&#xff0c;为 AI 在复杂视觉信息处理领域带来了重大突破。 传统 RAG 方法的局限 传统的检索增强型生成&#xff08;RAG&#xff0…

【iOS】方法交换

方法交换 method-swizzling是什么相关API方法交换的风险method-swizzling使用过程中的一次性问题在当前类中进行方法交换类方法的方法交换 方法交换的应用 method-swizzling是什么 method-swizzling的含义是方法交换&#xff0c;他的主要作用是在运行的时候将一个方法的实现替…