如何诊断Rancher 2.x卡provisioning问题及查找集群构建日志
Rancher 2.x 自定义集群卡在“等待向Kubernetes注册”问题排查
核心问题1:Rancher集群搭建活动日志的存储位置
Rancher 2.x的日志存储逻辑和1.x完全不同,不存在旧版本/var/lib/cattle的路径,按排查场景分三类:
- Rancher服务端全量日志
直接查看运行Rancher的容器标准输出:
定位容器:docker ps | grep rancher/server
拉取近10分钟日志:docker logs -f --since 10m <rancher容器ID>
排查时重点搜索关键词:noderegistration、cluster.provision、wss handshake、tls - 节点侧rancher-agent日志
这是节点和Rancher交互的最直接日志,就是你之前找到的路径:
定位agent容器:docker ps | grep rancher/rancher-agent
拉取全量运行日志:docker logs --tail 300 <agent容器ID>
排查时重点搜索关键词:Waiting for node to register、connection refused、x509、etcd dial - Rancher UI侧集群事件日志
不需要登录服务器即可查看,进入对应集群详情页,左侧导航选择「事件」标签,即可看到Rancher拉取的所有集群组件、节点的运行报错,比翻容器日志排查效率更高。
核心问题2:卡“Waiting to register with Kubernetes”的最佳排查方案
结合你的环境配置(4台同Proxmox平台的Ubuntu20.04 VM、Rancher2.5.7默认配置、单节点单角色部署),按优先级排查:
- 先确认注册逻辑的前置要求
从你贴的agent日志可以看到,当前明确的提示是:"Waiting for node to register. Either cluster is not ready for registering or etcd and controlplane node have to be registered first"。
自定义集群的注册流程是强顺序依赖:必须至少有1台带--controlplane角色的节点完成注册、成功启动kube-apiserver服务,etcd、worker角色的节点才会被允许完成注册流程。你当前仅启动了etcd角色节点的agent,没有在对应controlplane节点上执行带--controlplane参数的agent启动命令,自然会一直卡在等待状态。 - 逐台验证节点间的端口连通性(不要靠ping/SSH判断网络正常)
同虚拟化平台下的节点经常因为桥接配置、默认防火墙规则拦截特定流量,逐段测试连通性:- 所有节点到Rancher节点:需要通
TCP 443(Rancher的wss注册通道) - controlplane节点到etcd节点:需要通
TCP 2379(etcd客户端端口)、TCP 2380(etcd节点同步端口) - 所有节点间需要通
UDP 8472(2.5版本默认Flannel CNI的overlay端口)
测试连通性直接用命令:nc -vz <目标IP> <端口>,只要有一个端口不通就会导致注册卡住。
- 所有节点到Rancher节点:需要通
- 修复resolv.conf的回环DNS问题
日志里的Loopback address found in /etc/resolv.conf不是可忽略的告警:Ubuntu20.04默认用systemd-resolved把127.0.0.53作为本地DNS缓存,而Rancher agent、kubelet组件会直接读取宿主机的resolv.conf,回环地址的DNS配置会导致组件镜像拉取、集群内域名解析失败,最终注册超时。
修复方式:直接把宿主机/etc/resolv.conf的nameserver改成实际可用的公网DNS(比如1.1.1.1、8.8.8.8),不要走本地回环的DNS缓存配置,重启对应节点的agent容器后再观察日志。 - 确认自签证书的校验问题
本地部署的Rancher默认用自签CA证书,如果节点侧没有正确信任CA,会导致wss通道握手成功但后续注册流程静默失败:看agent日志中有没有x509: certificate signed by unknown authority类报错,若存在,在本地测试环境可以给agent启动命令加--insecure参数跳过证书校验验证。
内容的提问来源于stack exchange,提问作者Pyromancer
相关产品推荐
相关产品推荐

