生产环境部署Rancher Server必须先搭建Kubernetes集群(如K3s),再通过Helm安装,因裸跑docker run仅支持单节点演示模式,无高可用、无持久化、无法纳管其他K8s集群。

直接在 Linux 上装 Rancher,不是装“Rancher Desktop”(那是桌面端开发用的),而是部署 Rancher Server —— 一个能纳管任意 Kubernetes 集群(包括 RKE、K3s、EKS、GKE、TKE 等)的企业级管理平台。它必须运行在自己的 Kubernetes 集群上,不能裸跑 Docker 容器就当生产环境用。
为什么不能直接 docker run rancher/rancher 就完事?
这个命令确实能快速拉起 UI,但它是单节点、无高可用、无持久化、不支持多集群纳管的“演示模式”。真实场景下会立刻遇到三个硬伤:
-
rancher/rancher容器内嵌的 etcd 和 API Server 没有外部存储,重启即丢数据 - 没有 RBAC、AD/LDAP 集成能力,无法对接企业身份系统
- 无法导入或创建其他集群(比如你已有的 EKS 或自建 RKE 集群),它自己就是孤岛
所以,生产或准生产环境,必须先搭一个 Kubernetes 集群(推荐 K3s),再用 Helm 把 Rancher 装进去。
K3s 单节点集群安装要点(server 模式 + 外部数据库可选)
K3s 是 Rancher 官方主推的轻量发行版,curl -sfL https://get.k3s.io | sh -s - server 这条命令就能拉起控制平面。但要注意几个关键参数:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 加
--write-kubeconfig-mode 644,否则kubectl默认没权限读配置 - 加
--disable traefik,避免和 Rancher 自带的 ingress controller 冲突 - 如需长期运行,务必配外部数据库(MySQL/PostgreSQL),否则默认 SQLite 在磁盘满或异常关机后大概率损坏;配置方式是
--datastore-endpoint="mysql://user:pass@tcp(10.0.0.5:3306)/rancher"或设环境变量K3S_DATASTORE_ENDPOINT - 启动后检查
sudo systemctl status k3s,确认 Active: active (running),再执行sudo k3s kubectl get nodes看是否 Ready
Helm 安装 Rancher 的三步实操(v2.7+ 版本)
Rancher v2.6 之后强制要求通过 Helm 安装,不再支持镜像直启。核心步骤如下:
- 确保
kubectl已配置好且能连上 K3s 集群(kubectl get ns应返回kube-system等命名空间) - 添加 Helm 仓库:
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable,然后helm repo update - 创建命名空间:
kubectl create namespace cattle-system - 安装命令示例(启用自签名证书,适合内网测试):
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.example.org --set tls=ingress --set ingress.tls.source=rancher
注意:hostname 必须可解析(写进 /etc/hosts 或配 DNS),否则 Ingress 无法路由到 Rancher Pod;安装后等 kubectl -n cattle-system get pods 全部为 Running,再访问该域名。
常见故障:页面打不开 / 一直显示 “Waiting for server to become available”
这不是网络问题,90% 是 Rancher Pod 启动失败。排查顺序很固定:
- 先看 Pod 状态:
kubectl -n cattle-system get pods,如果卡在Init:0/1或CrashLoopBackOff,说明初始化失败 - 查日志:
kubectl -n cattle-system logs -l app=rancher --previous(加--previous是为了看上一次崩溃的日志) - 典型报错:
failed to connect to database→ 检查 K3s 的--datastore-endpoint地址是否通、账号密码对不对、数据库里有没有提前建rancher库 - 另一个高频错误:
x509: certificate signed by unknown authority→ 如果用了私有 CA 签发的证书,得把 CA 证书挂进 Pod,通过--set privateCA=true和additionalTrustedCAs参数注入
真正容易被忽略的是:K3s 默认监听 127.0.0.1:6443,而 Rancher 的 Helm Chart 会尝试从集群内部访问这个地址。如果 K3s 是用 --bind-address=0.0.0.0 启的,但防火墙没放开 6443 端口,Rancher 就会连不上自己的 API Server —— 这种底层连通性问题,日志里往往只显示超时,不会明说防火墙挡了。

















