问题描述:

在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版本。

参考