news 2026/6/23 23:44:55

docker(3)rocky9.7 k8s和Rancher

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
docker(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.2docker 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.2docker 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.2docker 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.comDocker 中国镜像
https://docker.m.daocloud.ioDaoCloud 镜像
  • 配置步骤:

    • 创建配置文件:

      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 可用

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 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 -

📌 参数解释:

参数

作用

--insecure

跳过证书校验

-s

静默模式

-f

失败不报错

-L

跟随重定向


✅ ③ 验证 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

Active

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

自签名证书

curl https://142:7443

--insecure

Agent Pending

标签不兼容

kubectl describe pod cattle-cluster-agent

替换标签

Agent CrashLoopBackOff

版本不匹配

kubectl logs cattle-cluster-agent

升级 Rancher

UI 一直 Unavailable

网络不通

telnet 142 7443

放通防火墙

node-agent Missing

DaemonSet 未调度

kubectl get ds -n cattle-system

检查污点


6️⃣ 核心原理说明(为什么一定要这样)

🔹 Rancher 导入 ≠ 接管

项目

说明

etcd

不接管

apiserver

不接管

控制面

保留原样

Agent

仅做管理通道

🔹 Agent 的作用

组件

作用

cattle-cluster-agent

集群级心跳、状态同步

cattle-node-agent

节点级操作(exec/logs)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 3:09:46

如何通过LiveSplit掌握专业速度跑计时:从新手到高手的完整指南

如何通过LiveSplit掌握专业速度跑计时&#xff1a;从新手到高手的完整指南 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit LiveSplit是一款专为速度跑者设计的开源计时软件&…

作者头像 李华
网站建设 2026/6/5 16:31:20

新手福音:在快马平台用qun329组件库动手实现第一个登录表单

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 我是一名前端开发新手&#xff0c;想学习如何使用qun329组件库。请生成一个简单的用户登录表单界面代码。表单需要包含用户名输入框、密码输入框、记住我复选框和提交按钮。要求使…

作者头像 李华
网站建设 2026/6/5 16:31:10

5G网络覆盖与速率的博弈:深入解读PDSCH码率控制背后的设计哲学(从寻呼MsgB到业务信道)

5G网络覆盖与速率的博弈&#xff1a;PDSCH码率控制背后的设计哲学在5G网络设计中&#xff0c;覆盖范围和传输速率始终是一对需要精心平衡的矛盾体。当我们站在基站下享受千兆速率时&#xff0c;可能不会想到&#xff0c;仅仅几百米外的用户可能正在为维持基本连接而挣扎。这种差…

作者头像 李华
网站建设 2026/6/5 16:30:16

压敏电阻选型与应用全解析:从原理到电路防护设计

1. 压敏电阻&#xff1a;电路中的“电压保险丝”在电源入口、通信端口或者任何一颗娇贵的芯片旁边&#xff0c;你大概率会看到一个不起眼的蓝色或黄色圆片&#xff0c;它可能就是压敏电阻。干了十几年硬件设计&#xff0c;我经手过的板子不计其数&#xff0c;要说哪个元件是默默…

作者头像 李华