文章目录
下面是一个 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_IP_OR_DOMAIN>
RANCHER_SERVER=$1
if [ -z "$RANCHER_SERVER" ]; then
echo "用法: $0 <RANCHER_SERVER_IP_OR_DOMAIN>"
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 <agent.yaml> 脚本。
这里pods都是running状态,没问题了。
“人的一生会经历很多痛苦,但回头想想,都是传奇”。