本文详细记录了在多台服务器上安装和配置Rancher v2.9.2及其相关组件如 K3s 和 Docker的全过程涵盖了安装步骤、遇到的问题及其解决方案、配置调整以及集群导入的操作重点解决了集群重置死锁问题和 Docker 镜像拉取失败的情况。关键流程与步骤Rancher 安装与启动在141 主节点上传了 Rancher 相关镜像文件使用命令docker load −i /opt/rancher/rancher_v2.9.2_imagedocker load −i /opt/rancher/rancher_agent_2.9.2docker load −i /opt/rancher/rancher_v2.9.2_imagedocker load −i /opt/rancher/rancher_agent_2.9.2运行 Rancher 容器命令示例docker run −d −−privileged −−restartunless−stopped −−name rancher−p 8880:80 −p 8443:443 −e CATTLE_SYSTEM_CATALOGbundled−v /var/lib/rancher:/var/lib/rancher rancher/rancher:v2.9.2docker run −d −−privileged −−restartunless−stopped −−name rancher−p 8880:80 −p 8443:443 −e CATTLE_SYSTEM_CATALOGbundled−v /var/lib/rancher:/var/lib/rancher rancher/rancher:v2.9.2集群死锁问题排查与解决K3s 出现集群重置Cluster Reset状态死锁导致 Kubernetes API Server127.0.0.1:6444未启动Rancher 报错连接拒绝connection refused。解决方案删除重置标记文件rm −f /var/lib/rancher/k3s/server/db/reset−flagrm −f /var/lib/rancher/k3s/server/db/reset−flag删除数据目录rm −rf /var/lib/rancherrm −rf /var/lib/rancher重启 rancher 容器docker restart rancherdocker restart rancher若无效则需重新安装 Rancher。解决该问题参考了社区 GitHub 解决方案rancher/issues/44279。#放弃141之后Rancher 再次部署与访问在142 从节点使用类似命令运行端口更改为 7880 和 7443且访问需使用 HTTPSdocker run −d −−privileged −−restartunless−stopped −−name rancher−p 7880:80 −p 7443:443−e CATTLE_SYSTEM_CATALOGbundled−v /var/lib/rancher:/var/lib/rancher rancher/rancher:v2.9.2docker run −d −−privileged −−restartunless−stopped −−name rancher−p 7880:80 −p 7443:443−e CATTLE_SYSTEM_CATALOGbundled−v /var/lib/rancher:/var/lib/rancher rancher/rancher:v2.9.2初始密码为123456abcdef集群导入与配置调整在 Rancher UI 生成导入主集群命令。需要先绕过证书检查编辑 Deployment执行命令kubectl edit deployment cattle−cluster−agent −n cattle−systemkubectl edit deployment cattle−cluster−agent −n cattle−system替换标签字段将beta.kubernetes.io替换为kubernetes.io将node-role.kubernetes.io/master替换为node-role.kubernetes.io/control-planeDocker 镜像拉取问题与解决问题描述Kubernetes 无法连接 Docker 官方仓库导致无法拉取镜像如nginx:1.25.3。解决方法更换为国内镜像源以提高下载速度和成功率。镜像源网址备注https://docker.mirrors.ustc.edu.cn中国科技大学镜像https://hub-mirror.c.163.com网易镜像https://registry.docker-cn.comDocker 中国镜像https://docker.m.daocloud.ioDaoCloud 镜像配置步骤创建配置文件sudo mkdir −p /etc/dockersudo mkdir −p /etc/dockersudo tee /etc/docker/daemon.json −′EOF′{registry−mirrors:[https://docker.mirrors.ustc.edu.cn,https://hub−mirror.c.163.com,https://registry.docker−cn.com,https://docker.m.daocloud.io]}EOFsudo tee /etc/docker/daemon.json −′EOF′{registry−mirrors:[https://docker.mirrors.ustc.edu.cn,https://hub−mirror.c.163.com,https://registry.docker−cn.com,https://docker.m.daocloud.io]}EOF重载守护进程并重启 Docker 服务sudo systemctl daemon−reloadsudo systemctl daemon−reloadsudo systemctl restart dockersudo systemctl restart docker配置完成后镜像拉取成功可用。Rancher 导入已有 K8s 集群141 master1️⃣ 导入整体流程逻辑图文字版纯文本纯文本Rancher UI142 │ │ 生成 import YAML含 cluster-agent / node-agent ▼ kubectl apply141 master │ │ 跳过自签名证书校验 ▼ cattle-cluster-agent 启动 │ │ 适配 K8s v1.32 标签 ▼ Agent 注册成功 → Rancher UI 显示 Active2️⃣ 前置条件检查很多人忽略检查项命令期望结果kubectl 可用kubectl get nodes正常返回节点API Server 可达kubectl cluster-info无报错节点时间同步date所有节点时间一致网络连通curl https://142:7443能访问 Rancher⚠️时间不同步会导致 TLS 握手失败3️⃣ Step-by-Step 操作详解✅ ① Rancher UI 生成导入命令路径纯文本纯文本Rancher → Clusters → Add Cluster → Import Existing Cluster填写信息字段值Cluster Namek8s-masterLabels可不填Agent Environment默认 点击Create​ 后会生成一条类似命令bashbashkubectl apply -f https://142:7443/v3/import/abcd1234.yaml✅ ② 在 141 master 执行导入关键❗ 必须绕过证书Rancher 使用自签名证书直接kubectl apply会失败。✅正确方式bashbashcurl --insecure -sfL \ https://192.168.222.142:7443/v3/import/abcd1234.yaml \ | kubectl apply -f - 参数解释参数作用--insecure跳过证书校验-s静默模式-f失败不报错-L跟随重定向✅ ③ 验证 Agent 是否已创建bashbashkubectl get pods -n cattle-system期望看到纯文本纯文本cattle-cluster-agent-xxxxx 0/1 Pending / Running cattle-node-agent-xxxxx 1/1 Running✅ ④ 修复 K8s v1.32 标签不兼容重点 问题现象Agent Pod 一直PendingRancher UI 显示纯文本纯文本Cluster agent is not connected 原因项目旧≤1.23新≥1.24架构标签beta.kubernetes.io/*kubernetes.io/*Master 标签node-role.kubernetes.io/masternode-role.kubernetes.io/control-planeAgent YAML 仍使用旧标签​ → 调度失败✅ 修复方法必须做bashbashkubectl edit deployment cattle-cluster-agent -n cattle-system进入 vi 后末行模式执行vimvim:%s/beta.kubernetes.io/kubernetes.io/g :%s/node-role.kubernetes.io\/master/node-role.kubernetes.io\/control-plane/g保存退出vimvim:wq 这会触发Rolling UpdateAgent 自动重建。4️⃣ 状态确认导入成功标志✅ Rancher UI位置状态Cluster ListActiveNode Count≥1Agent StatusConnected✅ 命令行验证141bashbashkubectl get nodes kubectl get pods -A | grep cattle✅ 正常结果所有节点Readycattle-cluster-agentRunning无ImagePullBackOff5️⃣ 常见故障 精准排查表故障现象根因排查命令解决x509 certificate error自签名证书curl https://142:7443加--insecureAgent Pending标签不兼容kubectl describe pod cattle-cluster-agent替换标签Agent CrashLoopBackOff版本不匹配kubectl logs cattle-cluster-agent升级 RancherUI 一直 Unavailable网络不通telnet 142 7443放通防火墙node-agent MissingDaemonSet 未调度kubectl get ds -n cattle-system检查污点6️⃣ 核心原理说明为什么一定要这样 Rancher 导入 ≠ 接管项目说明etcd不接管apiserver不接管控制面保留原样Agent仅做管理通道 Agent 的作用组件作用cattle-cluster-agent集群级心跳、状态同步cattle-node-agent节点级操作exec/logs