爆火!在K8S上部署Rancher,快来抄这份"高分作业"
1 | 作者:李晓辉 |
在 Kubernetes 环境中部署 Rancher 是构建企业级容器管理平台的重要一步。本文将以裸金属环境为例,详细介绍如何使用 Helm 安装 Rancher,包括准备 Helm 工具、配置 Ingress Controller、安装 cert-manager 以及部署 Rancher Server 的完整流程。通过自签名证书方式实现安全访问,并结合图文展示最终效果,帮助读者快速搭建可视化的多集群管理平台。
为什么要用 Rancher?
| 优势点 | 描述说明 |
|---|---|
| 多集群统一管理 | 支持集中管理本地、云端、边缘等多个 Kubernetes 集群,简化运维流程 |
| 图形化操作界面 | 提供直观的 Web UI,降低使用门槛,提升操作效率 |
| 权限与安全控制 | 内置 RBAC、审计日志等功能,满足企业安全合规要求 |
| 应用部署与 Helm 支持 | 集成 Helm Chart,可一键部署常用应用,加速 DevOps 流程 |
| 多租户与项目隔离 | 支持按项目划分资源,适合多团队协作又相互隔离的场景 |
现在我们来部署一个吧~
部署环境信息
- 操作系统:Ubuntu 24.04 LTS(64位)
- Kubernetes 版本:v1.33.x
- 部署方式:裸金属环境,使用 Helm 安装 Rancher
- 网络组件:ingress-nginx,以 DaemonSet 模式部署并启用主机网络
- 证书方案:Rancher 自签名证书,依赖 cert-manager 自动签发
- 容器运行时:使用Docker(Ubuntu 24.04 默认配置)
准备Helm环境
Helm 在安装 Rancher 时充当自动化部署工具的角色,它将 Rancher 的所有 Kubernetes 资源(包括 Deployment、Service、Ingress、配置等)打包为一个可复用的 Chart,使用户能够通过一条命令快速部署、配置和管理 Rancher,同时支持版本控制、参数定制和后续升级,极大简化了企业级容器平台的部署流程。
下载helm工具,最新版可从此页面下载
1 | wget https://get.helm.sh/helm-v3.19.0-linux-amd64.tar.gz |
将helm工具安装到用户的$PATH路径中
1 | root@k8s-master:~# tar xf helm-v3.19.0-linux-amd64.tar.gz |
添加helm命令补齐功能
执行以下命令后,你可以退出ssh,并重新登录或者执行sudo -i,即可使用helm的tab补齐功能
1 | helm completion bash > /etc/bash_completion.d/helm |
Ingress Controller
在安装 Rancher 时,Ingress Controller 的作用是为 Rancher 提供外部访问入口。它负责监听集群中的 Ingress 资源,并将来自外部的 HTTP/HTTPS 请求路由到 Rancher 的服务组件。由于 Rancher 默认不会在 Ingress 中设置 ingressClassName,我们通常需要配置 Ingress Controller 为默认类,以确保它能自动接管这些 Ingress 并实现 Web UI 的访问。
为了提升 Ingress Controller 的可达性,尤其是在裸金属环境中,我们希望让每个节点都运行一个 Ingress Controller 实例,并直接暴露主机网络端口。为此,我们对官方部署清单进行如下调整:
- 下载官方部署清单:
1 | wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.3/deploy/static/provider/baremetal/deploy.yaml |
修改控制器的部署方式:
- 将清单中的
Deployment类型修改为DaemonSet,以便在每个节点上运行一个副本。
- 将清单中的
启用主机网络访问:
- 在
spec.template.spec中添加字段hostNetwork: true,使每个 Pod 直接使用宿主机网络,便于外部访问。
- 在
修改更新机制
Deployment 使用 strategy 来控制滚动更新,而 DaemonSet 使用的是 updateStrategy。两者字段名不同但语义类似,因此在将控制器类型从 Deployment 改为 DaemonSet 时,必须同步调整字段名以避免配置错误。
完成修改后,Yaml文件中的原Deployment被改成:
1 | apiVersion: apps/v1 |
修改完成后,我们将Ingress控制器部署到kubernetes集群中
1 | kubectl create -f deploy.yaml |
Rancher Helm Chart 默认情况下不会在 Ingress 上设置 ingressClassName。因此,你必须将 Ingress Controller 配置为在没有 ingressClassName 的情况下也可以监视 Ingress,所以在部署好ingress控制器后,用patch命令添加一个annotations标记为默认。
1 | kubectl patch ingressclass nginx \ |
安装 Rancher Helm Chart
Rancher 是通过 Kubernetes 的 Helm 包管理器进行安装的。Helm Chart 为原始的 YAML 清单提供了模板化能力,使用户能够根据参数动态生成资源配置,从而实现灵活、可定制的部署方式,而不再依赖于固定的静态文件。
使用 Helm 安装 Rancher 相比手工编写 YAML 文件的方式,具有显著优势:它通过模板化和参数化机制简化了部署流程,避免了繁琐的资源定义和版本兼容问题;同时支持一键安装、升级、回滚和卸载,便于统一管理和持续维护,大幅提升了部署效率与可控性,尤其适合企业级环境中的标准化运维。
添加 Helm Chart 仓库
在安装 Rancher 前,需通过 helm repo add 命令添加官方 Helm Chart 仓库。根据使用场景选择合适的版本源:
- Latest:用于体验最新功能
1 | helm repo add rancher-latest https://releases.rancher.com/server-charts/latest |
- Stable:推荐用于生产环境
1 | helm repo add rancher-stable https://releases.rancher.com/server-charts/stable |
- Alpha:实验性预览版本,适合探索即将发布的功能
1 | helm repo add rancher-alpha https://releases.rancher.com/server-charts/alpha |
⚠️ 注意:Alpha 版本不支持升级或版本间切换,仅适用于临时测试。
选择仓库时应根据稳定性需求和功能预期权衡,确保部署策略与环境匹配,我们本次安装就选择stable
看看仓库是否添加完毕
1 | root@k8s-master:~# helm repo list |
为 Rancher 创建命名空间
在安装 Rancher 之前,必须先创建一个专用的 Kubernetes 命名空间,用于隔离和管理 Rancher 所部署的资源。推荐使用命名空间名称 cattle-system,执行以下命令即可创建:
1 | kubectl create namespace cattle-system |
这样可以确保 Helm 安装的所有组件都集中在该命名空间中,便于后续的运维与权限控制。
SSL 证书配置
Rancher 默认需要 TLS 证书来保护访问安全。你可以选择三种方式终止 TLS:
- Rancher 自签证书:需安装 cert-manager,自动生成和管理证书
- Let’s Encrypt 公共证书:也需 cert-manager,通过 HTTP 验证自动申请
- 已有证书:手动上传
tls.crt和tls.key,无需 cert-manager
通过 Helm 设置 ingress.tls.source 参数即可指定证书来源,我们这里选择自签名证书的方式,所以我们先完成cert-manager的安装。
安装CRD
1 | kubectl apply -f https://hub.gitmirror.com/https://github.com/cert-manager/cert-manager/releases/download/v1.19.1/cert-manager.crds.yaml |
添加 Jetstack Helm 仓库
1 | helm repo add jetstack https://charts.jetstack.io |
看看仓库是否添加完毕
1 | root@k8s-master:~# helm repo list |
更新本地 Helm Chart 仓库缓存
1 | helm repo update |
安装 cert-manager Helm Chart
1 | helm install cert-manager jetstack/cert-manager \ |
这个安装过程要拉取一些镜像,可能需要一定的时间,耐心等待即可,安装好之后,我们来看看cert-manager的pod
1 | root@k8s-master:~# kubectl get pod -n cert-manager |
通过 Helm 安装 Rancher
我们采用的是自签名证书方式,因此 Rancher 会默认生成 CA,并通过 cert-manager 自动签发用于访问 Rancher Server 的 TLS 证书。由于 ingress.tls.source=rancher 是 Helm Chart 的默认配置项,安装时无需显式指定该参数。这样可以简化部署流程,同时确保接口通信具备基础的加密保护。
在使用 Helm 安装 Rancher 时,请确保设置以下关键参数:
hostname:指定解析到负载均衡器的 DNS 名称或使用分配给ingress的域名,用于外部访问 Rancher UI,在下面的例子中,我打算用rancher.xiaohui.cn作为访问域名,不过这需要做hosts解析,因为这域名并不属于我bootstrapPassword:为 admin 用户设置初始登录密码,确保安全性,在下面的例子中我用的是lixiaohui--version:如需安装特定版本的 Rancher,可通过该标志指定版本号,例如--version 2.12.3
这些参数可通过 --set 传入 Helm 命令,实现定制化部署。
1 | helm install rancher rancher-stable/rancher \ |
命令执行后,会输出以下内容:
1 | NAME: rancher |
以上信息告诉我们,如果需要,可以用secret的方法找到我们的密码。
验证 Rancher Server 是否部署成功
用一下命令观察rancher的deployment是否部署成功,卡住不动说明还没有成功
不过需要说明的是,在中国,你需要各种容器镜像加速器才可以成功,如果你卡住不动,并且没有容器镜像加速器,可以点这里查询容器镜像加速器相关内容
1 | root@k8s-master:~# kubectl -n cattle-system rollout status deploy/rancher |
或者你直接简单粗暴的用下面的方法查看
1 | kubectl get pod -A |
只要都是running即可说明安装成功了。
一切正常后,我们来试试访问rancher看看,在访问前,我们需要看看是否创建了ingress供我们访问
1 | root@k8s-master:~# kubectl get ingress -n cattle-system |
没问题后,我们在Windows上的C:\Windows\System32\drivers\etc\hosts文件中,添加域名和地址的解析,即可打开web ui
1 | 192.168.8.4 rancher.xiaohui.cn |
让我们来欣赏一下rancher的风景吧~
第一次登陆的时候,让你输入bootstrap的密码,并设置新的密码

登陆后,看看主页

主页是英文的,可以点右上角的账号设置,设置成中文就可以了

忽略我的红色,因为我有一个节点没开机~
哈哈,大功告成喽,希望我的文章对你有帮助~