导入现有EKS集群至Rancher遇"cluster not found"错误的排查
EKS集群导入Rancher时cattle-agent报"cluster not found"错误排查
错误日志
time="2025-02-25T10:19:04Z" level=info msg="Connecting to wss://<xchjsdvkjhvskfhjgvksdh>.elb.amazonaws.com/v3/connect/register with token starting with tb" time="2025-02-25T10:19:04Z" level=info msg="Connecting to proxy" url="wss://<xchjsdvkjhvskfhjgvksdh>.elb.amazonaws.com/v3/connect/register" time="2025-02-25T10:19:04Z" level=error msg="Failed to connect to proxy. Response status: 400 - 400 Bad Request. Response body: cluster not found" error="websocket: bad handshake" time="2025-02-25T10:19:04Z" level=error msg="Remotedialer proxy error" error="websocket: bad handshake"
环境与操作详情
- 在EKS集群部署Rancher,通过AWS网络负载均衡器(HTTP协议)暴露服务
- 两个EKS集群均正常运行
- 已按Rancher官方步骤,在目标EKS集群执行
kubectl apply -f .yaml完成导入配置 - 已执行排查:
- 检查Rancher UI未显示该集群
- 重启cattle-agent后错误依旧
1. 导致"cluster not found"错误的原因是什么?
核心原因是cattle-agent使用的注册令牌无效,或Rancher端未生成对应集群的注册记录,具体场景包括:
- 导入YAML中的注册令牌已过期(Rancher生成的导入令牌默认存在有效期)
- 导入YAML中的Rancher访问地址(wss://...elb.amazonaws.com)与Rancher实际对外暴露的地址不匹配,导致agent连接到错误端点,Rancher无法识别对应集群
- 执行导入YAML前,Rancher端的集群注册请求已超时或被清理,agent携带的令牌在Rancher侧无对应集群记录
2. 是否需要为Rancher负载均衡器配置HTTPS/TLS才能正常连接?
是,必须配置HTTPS/TLS:
- Rancher agent与server通过WebSocket(wss)通信,wss依赖TLS加密层,HTTP协议的负载均衡无法正确转发wss流量,会直接导致握手失败
- Rancher默认要求server端使用HTTPS,未加密的HTTP连接会被拒绝,进而引发agent注册失败
3. Rancher成功注册现有EKS集群是否需要特定的RBAC或IAM权限?
需要,分两类权限:
- 目标EKS集群的RBAC权限:导入YAML会自动创建ServiceAccount、ClusterRole及ClusterRoleBinding,这些资源是agent在目标集群执行资源管理、状态上报的基础,必须确保它们正确创建且未被篡改
- IAM权限:
- 部署Rancher的EKS集群,其server Pod需通过IRSA绑定AmazonEKSClusterPolicy等权限,确保Rancher能正常管理EKS资源
- 目标EKS集群的节点IAM角色,需允许节点向Rancher NLB的443端口发起出站连接
4. 是否有特定的手动排查方法或强制Rancher识别集群的方式?
手动排查步骤:
- 重新生成Rancher导入YAML,对比现有YAML中的
CATTLE_SERVER地址和CATTLE_REGISTRATION_TOKEN是否一致,确认令牌未过期、地址正确 - 用
curl -v https://<NLB地址>/v3测试Rancher API连通性,验证TLS证书有效、NLB配置正常 - 检查目标集群cattle-agent Pod的环境变量,确认
CATTLE_SERVER和CATTLE_REGISTRATION_TOKEN加载正确 - 查看Rancher server Pod日志,搜索对应令牌的注册请求,获取更详细的错误信息
强制识别的方式:
- 删除目标集群中已部署的cattle-agent相关资源(包括Namespace、Deployment、ServiceAccount等),从Rancher UI重新生成导入YAML后再次执行
kubectl apply -f - 如果Rancher UI中存在未完成的集群注册请求,先删除该请求,再重新发起导入流程
内容的提问来源于stack exchange,提问作者user3398900
相关产品推荐
相关产品推荐

