Docker运行的rancher,偶现无法连接kubernetes集群地址的情况

Rancher Server 设置

  • Rancher 版本:2.5.12

问题描述:本地问题的K8S集群和rancher的部署方式如下图

问题现象说明:
通过docker运行的rancher可以正常导入自己部署的K8S集群,但是在通过rancher管理K8S的过程中,页面偶尔会出现无法访问K8S集群API的情况,页面弹窗会报错,报错内容为“dial tcp 10.20.0.1:443: connect: no route to host”,我通过自己排查发现,报错地址10.20.0.1是自己部署的K8S集群默认的svc地址,如下图


跟踪rancher的后台日志,后台日志偶尔也会报如下错误

请帮忙指导该问题的处理方法,谢谢

你可以阅读这篇文章,这是Rancher和知乎的一次联合优化实践,对你的场景会有所启发:Rancher 和知乎超大规模多集群管理联合实践 - 知乎

鉴于企业版是付费的,所以你可以在社区版尝试文中提到的内核调优和kube api-server调优。

感谢你的回复 我认真的阅读了你推荐的文章 目前我们的确使用的是社区版 后面不排除会考虑企业版,我也看到了文中介绍的社区版和企业版的差异
我们目前的集群很小,我看到的问题是rancher无法和管理的目标K8S集群api通信,这个问题在部署K3S,然后使用K3S部署rancher,使用rancher初始化K8S集群的方式中不会遇到,目前看这个问题发生在docker直接运行rancher,通过docker版本rancher管理自建集群的时候才会发生,我想知道这两种方式的差异,如果你们能告诉我,docker运行rancher管理自建集群的方式(rancher是怎么访问到被管理自建集群ClusterIP地址的,我在rancher所在服务器telnet自建集群ClusterIP地址是不通的,但是rancher却可以获取被管理集群的信息,我不知道他们之间是怎么交互的)就更好了,谢谢!

Rancher和下游集群之间建立了Tunnel,这个Tunnel可以用于做请求代理。

可以参考这两处文档:

非常感谢 这次的文档清晰的解答了我的问题