不能。docker run rancher/rancher 仅支持单节点演示模式,无高可用、无持久化、无法纳管其他K8s集群,重启即丢数据,不适用于生产环境;生产必须基于K3s等Kubernetes集群,通过Helm部署。

docker run rancher/rancher 能不能直接用于生产?
不能。直接用 docker run rancher/rancher 启动的 Rancher 是单节点、无持久化、无高可用的“演示模式”,只适合本地验证或临时测试。它内置的 local 集群依赖容器内嵌 etcd 和 controlplane,重启或删容器后所有配置(用户、集群、证书)全部丢失。
常见错误现象包括:failed to start controlplane、Failed to create pod sandbox、登录后看不到任何集群、导入外部 K8s 失败。
- 必须加
--privileged:否则内嵌 Kubernetes 无法挂载 cgroup、操作 netns、启动 nested 容器 - 必须挂载数据卷:
-v /opt/rancher:/var/lib/rancher,否则所有状态随容器销毁 - 不能省略
--restart=unless-stopped:主机重启后 Rancher 不会自动恢复 - 若宿主机已占用 80/443(如 Nginx),需改端口并配反向代理,否则 UI 无法访问
生产环境必须走 K3s + Helm 部署
Rancher 2.6+ 官方强制要求部署在 Kubernetes 集群之上,不再支持裸容器模式。推荐用 K3s —— 轻量、易维护、与 Rancher 深度集成。
关键实操点:
- 安装 K3s 时加
--write-kubeconfig-mode 644,否则kubectl报 permission denied - 务必禁用默认 Traefik:
--disable traefik,避免和 Rancher 自带 ingress 冲突 - 单节点长期运行必须配外部数据库(MySQL/PostgreSQL),否则 SQLite 在磁盘满或异常关机后极易损坏;配置方式为
--datastore-endpoint="mysql://user:pass@tcp(10.0.0.5:3306)/rancher" - 启动后验证:
sudo systemctl status k3s确认 active,再执行sudo k3s kubectl get nodes看是否 Ready
Helm 安装 Rancher v2.7 的最小可行命令
确认 K3s 正常运行后,用 Helm 安装 Rancher。v2.7.x 要求明确指定 --set hostname=,且必须可被下游节点 DNS 解析。
示例(假设你用 rancher.example.com 作访问域名):
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.com \ --set replicas=1 \ --set tls=external
说明:
-
--set tls=external表示由前置 LB 或 Nginx 终止 HTTPS,Rancher 只处理 HTTP 流量(最常用) - 若要 Rancher 自签证书,改用
--set tls=ingress --set ingress.tls.source=secret,但需提前创建 cert-manager 和 issuer - 不指定
replicas默认为 3,单节点 K3s 上必须设为 1,否则调度失败 - 安装后检查 Pod 状态:
kubectl -n cattle-system get pods,所有rancher-Pod 应为 Running
部署后第一件事:验证 Rancher Server URL 和证书
Rancher 的 Server URL 不是随便填的 IP 或 localhost,它决定了所有下游集群如何回连——这个地址必须能被每个被纳管节点的 curl 和 kubelet 直接访问,且证书必须可信。
容易踩的坑:
- 填了
https://192.168.1.100,但 worker 节点解析不到该 IP(比如跨子网或 NAT) - 用了自签名证书却没把 CA 加到下游节点的系统信任链,导致
x509: certificate signed by unknown authority - 填了域名但没配 DNS 或 hosts,节点
ping rancher.example.com不通 - 用了
localhost或127.0.0.1—— 下游节点永远连不上
验证方式:在任一待纳管节点上执行 curl -vk https://rancher.example.com/ping,应返回 pong 且无证书告警。


















