Rancher导入k8s集群后状态长时间处于Pending状态
问题描述:
在Rancher导入外部k8s集群 ,导入的集群一直处于“pending”状态。
这里简要记录一下排查过程和临时解决办法。
问题环境
- rancher v2.6.6
- kubernetes v1.24
- vm1 ubuntu (rancer)
- vm2-3-4 k8s集群
导入步骤:“集群”–“添加”–“集群名称”–创建–
排查&解决
Rancher 通过 CusterAgent 与集群进行通信(通过cattle-cluster-agent调用 Kubernetes API 与集群通讯),并通过cattle-node-agent与节点进行通信。如果 cattle-cluster-agent 无法连接到已有的 Rancher Server 也就是server-url,集群将保留在 Pending 状态。
1 . 在k8smaster节点上面,查看ClusterAgent的pod状态是否正常,默认的namespace为“cattle-system”
kubectl get pods -n cattle-system
root@k8s-master:~# kubectl get pods -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-cluster-agent-79749... 1/0 Pending 0 8m52s
cattle-cluster-agent-79749... 1/0 Pending 0 5m21s
看到pod未正常启动
2. 进一步查看pod错误日志
kubectl logs -f [contariner-id] -n cattle-system
root@k8s-master:~# kubectl logs -f cattle-cluster-agent-79749... -n cattle-system
...
no secret assigned to service account cattle-system/rancher
...
3. 查找error处理办法
通过查阅官方issures有提到
2.6.6版本说明建议:
Rancher v2.6.6是v2.6.5的镜像版本,只做了一个修改,以解决以下问题:
-当Rancher试图控制来自下游集群的大量流量时,出现了一个主要的性能问题。这种机制没有正确地处理断开,并将导致无限锁定。看到# 37250。
所以我猜他们没有在这个版本中添加K8S 1.24兼容性,因为v2.6.6中的兼容版本是:
- v1.18.20-rancher1-3
- v1.19.16-rancher1-5
- v1.20.15-rancher1-3
- v1.21.12-rancher1-1
- v1.22.9-rancher1-1
- v1.23.6-rancher1-1
Rancher 2.6.6 不支持 1.24。根据在此问题上设置的里程碑,计划为 2.6.7 提供支持。
4.尝试回滚版本
回滚k8s版本v1.23,rancher重新导入集群,再查看pods状态
kubectl get pods -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-cluster-agent-79749... 1/1 Running 0 8m52s
cattle-cluster-agent-79749... 1/1 Running 0 5m21s
回到rancher查看导入的k8s状态为 “Active”
至此,问题已暂时解决。持续关注Rancher2.6.7版本。