当前位置: 首页 > news >正文

Docker部署的Rancher无法重启----重建 Rancher Server 并修复 TLS

文章目录

    • 1、原因分析
    • 2、解决方案思路
    • 3、具体操作
      • 3.1、停止并清理旧 Rancher 容器
      • 3.2、清理残留 namespace 和 webhook
      • 3.3、创建 TLS 证书(自签名示例)
      • 3.4、运行新的 Rancher Docker 容器
      • 3.5、导入 Kubernetes 集群
    • 4、Rancher 部署的组件--Cluster Agent

1、原因分析

  • Rancher Docker 部署在单节点。

  • Kubernetes 是本地 kubeadm 安装。

之前强制删除过 cattle-system,可能导致:

Rancher 系统 chart(rancher-webhook)没办法正常部署。

原来的证书、CA 文件可能和新的环境不匹配 → TLS handshake 失败。

所以同时出现:

  • chart 找不到

  • TLS 证书错误

2、解决方案思路

  1. 清理旧数据 + 重装 Rancher(保留 kubeadm 集群)。

  2. 清理残留的 cattle-system

  3. 删除 stuck namespace 和 webhook 配置,保证系统 chart 可以重新部署。

  4. 重新导入集群

  • 导入前确保 Rancher Server 可访问,TLS 证书正确。

  • 检查 TLS 证书

  • 对 Docker Rancher Server,可以:

docker logs rancher

看证书加载是否报错

整体流程如下:

#清理旧 cattle-system namespace + webhook。#重建 Rancher Server Docker。#修复 TLS 证书。#导入 Kubernetes 集群。

3、具体操作

3.1、停止并清理旧 Rancher 容器

# 停止旧容器
docker stop rancher# 删除旧容器
docker rm rancher# 可选:清理旧数据(如果想完全重装 Rancher)
# 注意:删除后会清除所有 Rancher 配置,需要重新导入集群
# 如果你想保留数据,可跳过
rm -rf /opt/rancher/*

3.2、清理残留 namespace 和 webhook

# 删除 stuck namespace
kubectl get ns | grep cattle-system# 如果仍在 Terminating,强制清理 finalizer
kubectl get ns cattle-system -o json | jq '.spec.finalizers=[]' | \
kubectl replace --raw "/api/v1/namespaces/cattle-system/finalize" -f -# 删除残留 Rancher webhook 配置
kubectl get validatingwebhookconfigurations | grep cattle
kubectl delete validatingwebhookconfiguration <webhook-name>kubectl get mutatingwebhookconfigurations | grep cattle
kubectl delete mutatingwebhookconfiguration <webhook-name>

3.3、创建 TLS 证书(自签名示例)

Rancher Docker 容器可以使用自签名证书,也可以用 Let’s Encrypt 或现有 CA。

自签名示例:

mkdir -p /opt/rancher/certs# 生成 CA
openssl genrsa -out /opt/rancher/certs/ca.key 4096
openssl req -x509 -new -nodes -key /opt/rancher/certs/ca.key -subj "/CN=rancher-ca" -days 3650 -out /opt/rancher/certs/ca.crt# 生成服务证书
openssl genrsa -out /opt/rancher/certs/rancher.key 4096
openssl req -new -key /opt/rancher/certs/rancher.key -subj "/CN=192.168.31.203" -out /opt/rancher/certs/rancher.csropenssl x509 -req -in /opt/rancher/certs/rancher.csr -CA /opt/rancher/certs/ca.crt -CAkey /opt/rancher/certs/ca.key -CAcreateserial -out /opt/rancher/certs/rancher.crt -days 365
  • /CN 或 -subj 中使用 Rancher Server 的访问 IP 或域名。

  • /opt/rancher/certs/rancher.crt + rancher.key 将被 Docker 容器挂载。

3.4、运行新的 Rancher Docker 容器

docker run -d \--name rancher \--restart=unless-stopped \--privileged \-p 80:80 -p 443:443 \-v /opt/rancher:/var/lib/rancher \-v /opt/rancher/certs:/etc/rancher/ssl \rancher/rancher:latest

容器启动后,Rancher 会自动使用挂载的 TLS 证书。

日志查看:

docker logs -f rancher

确认没有 TLS handshake 错误。

3.5、导入 Kubernetes 集群

打开 Rancher UI → 集群管理 → 导入集群 → 复制 import YAML。

在 K8s master 上执行:

curl --insecure -sfL https://192.168.31.203/v3/import/8rgtrrxl2vjrpfk7r4xlkxhgk24gx7pngtnfsjwgdvkjn9w7gpt4rt_c-7v2xw.yaml | kubectl apply -f -

在这里插入图片描述
cattle-system namespace 会被正常创建。

Rancher cluster-agent 将自动部署。

kubectl get pods -n cattle-system

在这里插入图片描述
注意事项

如果使用自签名证书,访问 Rancher UI 时需要在浏览器或 kubectl 上信任 ca.crt。

不要在 namespace 卡住时导入集群,否则 webhook 会阻塞。

强烈建议 先清理残留 webhook + Terminating namespace

在这里插入图片描述

4、Rancher 部署的组件–Cluster Agent

NAME                                    READY   STATUS    RESTARTS   AGE
cattle-cluster-agent-68f49f5594-fmd2m   1/1     Running   0          118m
cattle-cluster-agent-68f49f5594-z7n8j   1/1     Running   0          119m
rancher-webhook-6d67cf7c8c-g8j7z        1/1     Running   0          117m

上述Pod不是 K8s 系统自带的 Pod。

它们是 Rancher 部署的组件,属于 Rancher 的 Cluster Agent。

他们的作用:

  • 当你在 Rancher UI 导入或创建 K8s 集群 时,Rancher 会在目标集群里部署两个重要的 Agent:

  • cattle-cluster-agent → 用来和 Rancher Server 通信,把集群状态上报给 Rancher UI,并接收指令。

  • cattle-node-agent → 部署在每个节点上,执行一些操作,比如拉取镜像、管理 workload。

换句话说: 这些 Pod 是 Rancher 和你这个 K8s 集群之间的“桥梁”。

在这里插入图片描述


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


http://www.dtcms.com/a/346285.html

相关文章:

  • Lecture 19: Memory Management 6
  • linux驱动 day60
  • c语言之进程函数
  • Jetson Xavier NX 与 NVIDIA RTX 4070 (12GB)
  • CMake 快速开始
  • 常用的前端包管理器
  • 现代C#语法糖与核心特性
  • AI唤醒文化遗产新生:AI文物修复缩时、VR沉浸式展项破圈,大众感受千年文明新方式
  • 作品集PDF又大又卡?我用InDesign+Acrobat AI构建轻量化交互式文档工作流
  • AP服务发现PRS_SOMEIPSD_00256和PRS_SOMEIPSD_00631的解析
  • ubuntu 构建c++ 项目 (AI 生成)
  • uboot添加ping命令的响应处理
  • Flowise 任意文件上传漏洞 含Flowise Docker安装、漏洞复现(CVE-2025-26319)
  • 【python】python进阶——推导式
  • 深入理解 Java IO 流 —— 从入门到实战
  • 力扣(在排序数组中查找元素的第一个和最后一个位置)
  • Codeforces 更换
  • 零知开源——基于ESP8266(ESP-12F)驱动YS-IR05F红外控制空调
  • SRE系列(二) | 从可用性到 SLI/SLO
  • nginx-限速-限制并发连接数-限制请求数
  • 洛谷 P3811 【模板】模意义下的乘法逆元-普及/提高-
  • html基本元素
  • 嵌入式第三十五天(网络编程(UDP))
  • 特大桥施工绳断 7 人亡:索力实时监测预警机制亟待完善
  • STM32F1 EXTI介绍及应用
  • tiktok滑块反爬分析verifyV2
  • Linux设备模型技术路线图
  • B树,B+树,B*树
  • Codeforces Round 1043 (Div. 3)
  • set_case_analysis应用举例