A集群导入B集群中的高可用版rancher

琉璃3年前技术文章901

问题现象:

已知在B集群中采用helm方式部署了一个高可用版本的rancher,该rancher中已经配置导入了三套集群,并且三套集群状态在rancher控制台处均显示正常,日常可借助该rancher管控这三套集群。现在公司内另外又新部署了一套k8s集群,假定名称为A集群,通过rancher控制台配置导入该A集群,发现rancher控制台处该集群状态一直显示为pending状态。

排查步骤:

rancher控制台上A集群状态显示为pending,没有其它任何报错提示,所以首先登录到B集群,然后查看rancher server端的日志是否有报错。

经核查,rancher server端有报错,具体报错内容忘记保存下来了,但是rancher server端的报错内容不太好定位具体是哪里的问题。

A集群中查看rancher agent端是否有报错,最终看到有连接rancher server端端口超时的报错。

于是,登陆到A集群的rancher agent 的pod内,打算使用telnet测试下到rancher server端端口的连通性,发现pod内没有telnet命令。

1、pod内ping目标主机ip

尝试在A集群手动启动一个测试busybox,如下:

image.png 

在该pod内测试到rancher server端的网络连通性,如下:pod内ping rancher server端pod所在的主机ip,ping不通

image.png

 

同时在该pod所在的主机节点上抓包,会发现,只有到目标地址的请求包,没有回包

image.png 

然后在目标主机上抓包,可以看到有正常的请求包以及回包


image.png 

2、pod所在主机ping目标主机

busybox pod所在的集群A 主机节点测试到集群B主机节点ip的网络联通性,如下:集群A主机 ping集群B主机,可以正常ping通

image.png 

结论:

最终排查,发现是由于集群A中pod的网段和主机网段冲突导致。


image.png 

查看生效的pod网段可以直接使用命令:

kubectl get IPPool

纯文本

总结:

k8s跨集群网络互通访问,如果出现网络不通的情况。

一般是优先从以下两个方面排查:

1、集群内网络插件是否正常。状态是否正常;网络插件日志是否有刷异常

2、网段是否有冲突情况。pod主机网段、主机网段


相关文章

离线安装Kerberos

首先下载kerberos客户端所需rpm包在网站https://pkgs.org/搜索以下3个rpm包:https://pkgs.org/libkadm5krb5-libskrb5-workstati...

MySQL 8.0 新特性深度解析,成为数据库高手的必备!

MySQL 8.0 新特性深度解析,成为数据库高手的必备!

前言MySQL 5.7 在 2023 年 10 月 31 日起,就已经终止软件生命周期了,意味着 MySQL 官方将不再提供对 MySQL 5.7 版本的技术支持和更新。8.0 版本成为官方长期支持版...

hbase无法执行脚本停止服务问题分析

hbase无法执行脚本停止服务问题分析

问题现象:hbase执行stop-hbase.sh无法停止hbase进程定位过程:1.     执行脚本发现脚本在执行了停止命令后一直在循环查询hbase状态2...

PostgreSQL 索引管理

前言索引是关系型数据库离不开的话题,它是数据库中一种快速查询数据的方法。在 SQL 优化中,创建高性能的索引非常重要,本篇文章将对比 MySQL 介绍 PostgreSQL 的索引管理。1. 主键1....

Redis 大 key

1、bigkeysRedis提供了 bigkeys 参数能够使 redis-cli 以遍历的方式分析 Redis 实例中的所有 Key ,并返回 Key 的整体统计信息与每个数据类型中 Top1 的大...

Ansible部署和使用(sshpass)

Ansible部署和使用(sshpass)

简介Ansible默认通过 SSH 协议管理机器。安装Ansible之后,不需要启动或运行一个后台进程,或是添加一个数据库。只要在一台电脑(可以是一台笔记本)上安装好,就可以通过这台电脑管理一组远程的...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。