文章目录
下面是一个 Rancher 导入集群健康检测 的一键脚本,能帮快速判断:
1、检查内容
-
节点是否正常(Ready / NotReady)
-
核心系统 Pod(CoreDNS、Calico、Kube-Proxy 等)是否正常
-
Rancher 相关 Pod(cattle-cluster-agent、cattle-node-agent)是否正常
-
集群到 Rancher Server 的网络连通性(443 端口)
-
证书有效期(防止因 TLS 过期导致导入集群断线)
2、完整脚本rancher_cluster_check.sh
脚本内容(rancher_cluster_check.sh)
# Rancher 导入集群健康检测脚本 # 用法: ./rancher_cluster_check.sh RANCHER_SERVER=$1 if [ -z "$RANCHER_SERVER" ]; then echo "用法: $0 " exit 1 fi echo "===== 1. 检查节点状态 =====" kubectl get nodes -o wide echo echo "===== 2. 检查系统命名空间 Pod 状态 =====" kubectl get pods -n kube-system -o wide echo echo "===== 3. 检查 Rancher Agent Pod 状态 =====" kubectl get pods -n cattle-system -o wide echo echo "===== 4. 查看 Cluster Agent 日志(最近20行) =====" CLUSTER_AGENT=$(kubectl get pods -n cattle-system | grep cattle-cluster-agent | awk '{print $1}') if [ -n "$CLUSTER_AGENT" ]; then kubectl logs -n cattle-system $CLUSTER_AGENT --tail=20 else echo "未找到 cattle-cluster-agent Pod" fi echo echo "===== 5. 查看 Node Agent 日志(最近20行) =====" NODE_AGENT=$(kubectl get pods -n cattle-system | grep cattle-node-agent | head -n 1 | awk '{print $1}') if [ -n "$NODE_AGENT" ]; then kubectl logs -n cattle-system $NODE_AGENT --tail=20 else echo "未找到 cattle-node-agent Pod" fi echo echo "===== 6. 测试到 Rancher Server 的连通性(443端口) =====" nc -vz $RANCHER_SERVER 443 echo echo "===== 7. 检查 Rancher Server 证书有效期 =====" echo | openssl s_client -connect $RANCHER_SERVER:443 -servername $RANCHER_SERVER 2>/dev/null | openssl x509 -noout -dates echo echo "===== 检查完成 =====" 3、使用方法
保存脚本
vi rancher_cluster_check.sh # 粘贴脚本 chmod +x rancher_cluster_check.sh 
执行检测(假设 Rancher Server 是 192.168.31.203)
./rancher_cluster_check.sh 192.168.31.203 4、结果验证
运行结果会输出:
-
节点健康(Ready/NotReady)
-
系统 Pod(Calico、CoreDNS 等 Running 状态)
-
Rancher Agent 状态(是否在运行)
-
网络连通性(能否访问 Rancher 443 端口)
-
证书过期时间


5、错误处理
===== 4. 查看 Cluster Agent 日志(最近20行) ===== error: container cattle-cluster-agent-685bcd94df-zshpx is not valid for pod cattle-cluster-agent-685bcd94df-kj8bc ===== 5. 查看 Node Agent 日志(最近20行) ===== 未找到 cattle-node-agent Pod 5.1、Cluster Agent 日志无法查看
error: container cattle-cluster-agent-685bcd94df-zshpx is not valid for pod cattle-cluster-agent-685bcd94df-kj8bc 这说明你在 kubectl logs 时给的容器名或 Pod 名不匹配。
Pod 名:cattle-cluster-agent-685bcd94df-kj8bc
容器名可能是 cluster-register 或 cattle-cluster-agent,而不是你现在传的那个。
你可以用:
kubectl -n cattle-system describe pod cattle-cluster-agent-685bcd94df-kj8bc | grep -A 2 "Containers:" 来看这个 Pod 里到底有哪些容器名,然后再用:
kubectl -n cattle-system logs cattle-cluster-agent-685bcd94df-kj8bc -c 容器名 --tail=20 5.2、Node Agent 不存在
未找到 cattle-node-agent Pod 这个问题一般有两种可能:
你导入的集群只有控制平面节点,没有部署 node agent(可能是因为 agent 没安装成功,或者节点标签不对)。
如果是 自建 K8s 集群,Node Agent DaemonSet 没有起来,可以这样查:
kubectl -n cattle-system get daemonset cattle-node-agent 如果 DESIRED 是 0,说明 Rancher 没能调度到节点;如果是 1/1 但 Pod 没有,可能是节点污点或调度失败。
常见解决步骤
先看 Cluster Agent 是否正常运行:
kubectl -n cattle-system get pods -o wide 如果 CrashLoopBackOff 或 ImagePullBackOff,说明镜像拉取或权限问题。
如果 Node Agent 缺失,可以尝试重新导入集群,或者手动执行 Rancher 提供的 kubectl apply -f

这里pods都是running状态,没问题了。

“人的一生会经历很多痛苦,但回头想想,都是传奇”。