一键检测 Rancher 导入K8S集群是否健康的脚本(亲测实用)

下面是一个 Rancher 导入集群健康检测 的一键脚本,能帮快速判断:

1、检查内容

  1. 节点是否正常(Ready / NotReady)

  2. 核心系统 Pod(CoreDNS、Calico、Kube-Proxy 等)是否正常

  3. Rancher 相关 Pod(cattle-cluster-agent、cattle-node-agent)是否正常

  4. 集群到 Rancher Server 的网络连通性(443 端口)

  5. 证书有效期(防止因 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、结果验证

运行结果会输出:

  1. 节点健康(Ready/NotReady)

  2. 系统 Pod(Calico、CoreDNS 等 Running 状态)

  3. Rancher Agent 状态(是否在运行)

  4. 网络连通性(能否访问 Rancher 443 端口)

  5. 证书过期时间

在这里插入图片描述

在这里插入图片描述

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状态,没问题了。

在这里插入图片描述


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


<think>好的,我现在需要解决用户关于如何通过Rancher导入现有Kubernetes集群的问题。首先,我需要确认用户的需求是导入已有的K8S集群Rancher中进行管理。根据用户提供的引用资料,特别是引用[2]中的命令,用户可能已经有一定的Rancher安装基础,但需要具体的导入步骤。 接下来,我需要回忆Rancher的基本工作流程。Rancher管理集群通常有两种方式:一是通过Rancher部署全新的集群,二是导入已有的集群。这里用户关注的是后者。导入现有集群通常涉及到在Rancher界面生成注册命令,然后在目标集群上应用这个命令,从而建立连接。 然后,我需要检查用户提供的引用内容。引用[1]提到使用Rancher CLI部署集群,但用户的问题是关于导入现有集群,所以可能需要更多的UI操作步骤。引用[2]中的Docker命令是用来运行Rancher服务器的,这可能是前提条件,即用户已经安装了Rancher,现在需要导入集群。 接下来,我需要确保步骤的准确性。首先,用户需要登录Rancher的UI,进入集群管理页面,选择导入现有集群,然后生成对应的YAML文件或命令。然后在目标集群上执行这个命令,部署Rancher agent,这样Rancher就能接管集群了。这个过程可能涉及到kubectl apply命令的应用,以及可能的网络配置,确保目标集群能够访问Rancher服务器。 然后,我需要考虑潜在的问题和注意事项。例如,网络连通性:目标集群必须能够访问Rancher服务器的API端点;权限问题:执行命令的用户需要有足够的权限在目标集群上部署资源;版本兼容性:RancherKubernetes的版本是否兼容。此外,用户可能需要了解导入后的集群如何在Rancher中进行管理和监控。 还要考虑用户可能的后续问题,比如如何验证集群是否成功导入,如何处理导入过程中的常见错误,或者如何配置高级设置如访问控制、监控和日志集成等。 最后,根据用户提供的引用,特别是引用[2]中的Docker命令,可能需要提醒用户确保Rancher服务器已经正确安装并运行,且端口配置正确(如-p 1443:443),以便外部访问。同时,引用[1]提到的Rancher CLI可能不是必须的,但可以作为补充工具使用。 总结步骤应该是清晰的,分步指导用户完成导入过程,同时注意可能遇到的坑,比如网络配置和权限问题。此外,生成的相关问题需要围绕导入后的管理、验证和优化展开,帮助用户进一步了解Rancher的功能。</think>### 通过Rancher导入现有Kubernetes集群的步骤 以下是使用Rancher导入已有Kubernetes集群的详细流程: --- #### **1. 前提条件** - 已安装并运行Rancher Server(参考引用[2]中的命令): ```bash docker run -d --privileged --restart=unless-stopped -p 81:80 -p 1443:443 rancher/rancher:stable ``` - 现有Kubernetes集群的`kubeconfig`文件需具有管理员权限。 - Rancher Server与目标集群网络互通(确保目标集群能访问Rancher的API)。 --- #### **2. 在Rancher中生成注册命令** 1. 登录Rancher UI(默认地址:`https://<服务器IP>:1443`)。 2. 进入**集群管理**页面,点击**导入现有集群**。 3. 输入集群名称(如`my-existing-cluster`),点击**创建**。 4. Rancher会生成一个包含`kubectl`命令的注册脚本,示例如下: ```bash kubectl apply -f https://<RANCHER_SERVER>/v3/import/<CLUSTER_TOKEN>.yaml ``` --- #### **3. 在目标集群执行注册命令** 1. 在目标Kubernetes集群的**控制节点**上,使用`kubeconfig`执行上述命令: ```bash kubectl apply -f https://<RANCHER_SERVER>/v3/import/<CLUSTER_TOKEN>.yaml ``` 2. 等待部署完成(约1-2分钟),检查是否成功: ```bash kubectl -n cattle-system get pods # 应看到rancher-agent容器运行 ``` --- #### **4. 验证导入状态** - 返回Rancher UI,集群状态会从**Pending**变为**Active**。 - 在集群详情页可查看节点、工作负载、存储等资源[^2]。 --- #### **注意事项** - **网络问题**:若目标集群无法访问Rancher Server,需检查防火墙或反向代理配置。 - **证书问题**:若Rancher使用自签名证书,需在目标集群的节点上信任该证书。 - **版本兼容性**:Rancher需支持目标集群Kubernetes版本(参考[官方兼容性矩阵](https://rancher.com/support-matrix/))。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值