已知在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命令。
尝试在A集群手动启动一个测试busybox,如下:
在该pod内测试到rancher server端的网络连通性,如下:pod内ping rancher server端pod所在的主机ip,ping不通
同时在该pod所在的主机节点上抓包,会发现,只有到目标地址的请求包,没有回包
然后在目标主机上抓包,可以看到有正常的请求包以及回包
在busybox pod所在的集群A 主机节点测试到集群B主机节点ip的网络联通性,如下:集群A主机 ping集群B主机,可以正常ping通
最终排查,发现是由于集群A中pod的网段和主机网段冲突导致。
查看生效的pod网段可以直接使用命令:
kubectl get IPPool
纯文本
k8s跨集群网络互通访问,如果出现网络不通的情况。
一般是优先从以下两个方面排查:
1、集群内网络插件是否正常。状态是否正常;网络插件日志是否有刷异常
2、网段是否有冲突情况。pod主机网段、主机网段
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs
《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs
《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack