k8s(3)rocky9.7 k8s和Rancher
本文详细记录了在多台服务器上安装和配置 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.2
-
- 使用命令:
- 运行 Rancher 容器命令示例:
docker run −d −−privileged −−restart=unless−stopped −−name rancher−p 8880:80 −p 8443:443 −e CATTLE_SYSTEM_CATALOG=bundled−v /var/lib/rancher:/var/lib/rancher rancher/rancher:v2.9.2
集群死锁问题排查与解决

- K3s 出现集群重置(Cluster Reset)状态死锁,导致 Kubernetes API Server(127.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,且访问需使用 HTTPS:
docker run −d −−privileged −−restart=unless−stopped −−name rancher−p 7880:80 −p 7443:443−e CATTLE_SYSTEM_CATALOG=bundled−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-plane
- 将
- 执行命令:
Docker 镜像拉取问题与解决
- 问题描述:Kubernetes 无法连接 Docker 官方仓库,导致无法拉取镜像,如
nginx:1.25.3。 - 解决方法:更换为国内镜像源以提高下载速度和成功率。
| 镜像源网址 | 备注 |
|---|---|
| https://docker.mirrors.ustc.edu.cn | 中国科技大学镜像 |
| https://hub-mirror.c.163.com | 网易镜像 |
| https://registry.docker-cn.com | Docker 中国镜像 |
| https://docker.m.daocloud.io | DaoCloud 镜像 |
-
配置步骤:
-
创建配置文件:
sudo mkdir −p /etc/dockersudo mkdir −p /etc/docker
sudo 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−reload
sudo systemctl restart dockersudo systemctl restart docker
-
-
配置完成后,镜像拉取成功可用。

Rancher 导入已有 K8s 集群(141 master)
1️⃣ 导入整体流程(逻辑图文字版)
纯文本
纯文本
Rancher UI(142)
│
│ 生成 import YAML(含 cluster-agent / node-agent)
▼
kubectl apply(141 master)
│
│ 跳过自签名证书校验
▼
cattle-cluster-agent 启动
│
│ 适配 K8s v1.32 标签
▼
Agent 注册成功 → Rancher UI 显示 Active
2️⃣ 前置条件检查(很多人忽略)
|
检查项 |
命令 |
期望结果 |
|---|---|---|
|
kubectl 可用 |
|
正常返回节点 |
|
API Server 可达 |
|
无报错 |
|
节点时间同步 |
|
所有节点时间一致 |
|
网络连通 |
|
能访问 Rancher |
⚠️ 时间不同步会导致 TLS 握手失败
3️⃣ Step-by-Step 操作详解
✅ ① Rancher UI 生成导入命令
路径
纯文本
纯文本
Rancher → Clusters → Add Cluster → Import Existing Cluster
填写信息
|
字段 |
值 |
|---|---|
|
Cluster Name |
k8s-master |
|
Labels |
可不填 |
|
Agent Environment |
默认 |
📌 点击 Create 后,会生成一条类似命令:
bash
bash
kubectl apply -f https://142:7443/v3/import/abcd1234.yaml
✅ ② 在 141 master 执行导入(关键)
❗ 必须绕过证书
Rancher 使用自签名证书,直接 kubectl apply会失败。
✅ 正确方式
bash
bash
curl --insecure -sfL \
https://192.168.222.142:7443/v3/import/abcd1234.yaml \
| kubectl apply -f -
📌 参数解释:
|
参数 |
作用 |
|---|---|
|
|
跳过证书校验 |
|
|
静默模式 |
|
|
失败不报错 |
|
|
跟随重定向 |
✅ ③ 验证 Agent 是否已创建
bash
bash
kubectl 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 一直
Pending -
Rancher UI 显示:
纯文本
纯文本
Cluster agent is not connected
🔴 原因
|
项目 |
旧(≤1.23) |
新(≥1.24) |
|---|---|---|
|
架构标签 |
beta.kubernetes.io/* |
kubernetes.io/* |
|
Master 标签 |
node-role.kubernetes.io/master |
node-role.kubernetes.io/control-plane |
Agent YAML 仍使用旧标签 → 调度失败
✅ 修复方法(必须做)
bash
bash
kubectl edit deployment cattle-cluster-agent -n cattle-system
进入 vi 后,末行模式执行:
vim
vim
:%s/beta.kubernetes.io/kubernetes.io/g
:%s/node-role.kubernetes.io\/master/node-role.kubernetes.io\/control-plane/g
保存退出:
vim
vim
:wq
📌 这会触发 Rolling Update,Agent 自动重建。
4️⃣ 状态确认(导入成功标志)
✅ Rancher UI
|
位置 |
状态 |
|---|---|
|
Cluster List |
|
|
Node Count |
≥1 |
|
Agent Status |
Connected |
✅ 命令行验证(141)
bash
bash
kubectl get nodes
kubectl get pods -A | grep cattle
✅ 正常结果:
-
所有节点
Ready -
cattle-cluster-agentRunning -
无
ImagePullBackOff
5️⃣ 常见故障 & 精准排查表
|
故障现象 |
根因 |
排查命令 |
解决 |
|---|---|---|---|
|
x509 certificate error |
自签名证书 |
|
加 |
|
Agent Pending |
标签不兼容 |
|
替换标签 |
|
Agent CrashLoopBackOff |
版本不匹配 |
|
升级 Rancher |
|
UI 一直 Unavailable |
网络不通 |
|
放通防火墙 |
|
node-agent Missing |
DaemonSet 未调度 |
|
检查污点 |
6️⃣ 核心原理说明(为什么一定要这样)
🔹 Rancher 导入 ≠ 接管
|
项目 |
说明 |
|---|---|
|
etcd |
不接管 |
|
apiserver |
不接管 |
|
控制面 |
保留原样 |
|
Agent |
仅做管理通道 |
🔹 Agent 的作用
|
组件 |
作用 |
|---|---|
|
cattle-cluster-agent |
集群级心跳、状态同步 |
|
cattle-node-agent |
节点级操作(exec/logs) |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)