Rancher容器管理平台
Rancher容器管理平台

Rancher 中文文档: https://docs.rancher.cn/
什么是 Rancher?
Rancher 是一个 Kubernetes
管理工具,让你能在任何地方
和任何提供商
上部署和运行集群。
Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入
在任何地方运行的现有 Kubernetes 集群
。
Rancher 基于 Kubernetes 添加了新的功能,包括统一所有集群的身份验证和 RBAC,让系统管理员从一个位置控制全部集群的访问。
此外,Rancher 可以为集群和资源提供更精细的监控和告警,将日志发送到外部提供商,并通过应用商店(Application Catalog)直接集成 Helm。如果你拥有外部 CI/CD 系统,你可以将其与 Rancher 对接。没有的话,你也可以使用 Rancher 提供的 Fleet 自动部署和升级工作负载。
Rancher 是一个 全栈式 的 Kubernetes 容器管理平台,为你提供在任何地方都能成功运行 Kubernetes 的工具。
Docker部署Rancher
仅需三步!开启Rancher之旅
准备一台Linux主机 要求4GB内存,并且已经安装Docker
安装教程:使用 Docker 将 Rancher 安装到单个节点中
**
Docker 安装在生产环境中不支持。
**这些说明仅用于测试和开发目的。请不要使用此方法在生产环境中安装 Rancher。Rancher 的 Docker 安装仅推荐用于开发和测试环境中
1.基础配置
Rancher 容器内部启动了 k3s
,它依赖于底层宿主机具备 iptables 支持(用于网络转发、容器间通信等),否则会因为 缺少 iptable_nat / iptable_filter 模块 而导致:
1 | yum install -y iptables |
1.创建rancher挂在目录
1 | docker rm -f qianyios_rancher |
2.安装rancher
1 | docker run -d --privileged --restart=unless-stopped \ |
-p 8080
:80 外部端口:8080(宿主机端口):内部端口:80(容器端口)
-p 4431
:443 外部端口:4431(宿主机端口):内部端口:443(容器端口)
registry.cn-guangzhou.aliyuncs.com/qianyios/rancher:stable
是我自己构建的镜像(不定期更新,可能会落后版本),如果有条件可以下载原版镜像 rancher/rancher:stable
或者用国内构建的官方镜像registry.cn-hangzhou.aliyuncs.com/qianyios/rancher:版本号
这个你需要携带版本号
--privileged
标志会给容器内的进程几乎相同于宿主机的特权。这意味着容器内的进程可以访问宿主机的所有设备,并且可以执行一些通常需要特权的操作,比如加载内核模块等
查看密码
1 | docker logs qianyios_rancher 2>&1 | grep "Bootstrap Password:" |
qianyios_rancher
是我前面创建容器的一个名字
Bootstrap Password:
5qnwrp6gm9q28zsqnkbd2ktjxpkqkbt9rdbpb46c5xzf5qqkr8snx7
设置自定义密码
首页就这样了,安装成功
设置中文
添加已
在Kubernetes上部署Rancher
在此之前添加一个环境变量
操作节点:[所有的server]
在root用户下
1 | sudo echo "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> /etc/profile |
先决条件
Helm3
建议所有的server节点都安装
官网教程:Helm3 安装
本教材默认你使用的是helm3,如果没安装请按照以下教程安装,安装了就略过
1 | sudo curl https://qygit.qianyisky.cn/https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |
Kubernetes 集群
自行部署一个Kubernetes集群
已经测试过的Kubernetes
Ingress Controller
Rancher UI 和 API 通过 Ingress 公开。换言之,安装 Rancher 的 Kubernetes 集群必须包含一个 Ingress Controller。
对于 RKE、RKE2 和 K3s
,你不需要手动安装 Ingress Controller,因为它是默认安装的。
对于默认不包含 Ingress Controller 的发行版(例如 EKS、GKE 或 AKS 等托管 Kubernetes 集群),你必须先部署 Ingress Controller
。请注意,Rancher Helm Chart 默认情况下不会在 Ingress 上设置 ingressClassName
。因此,你必须将 Ingress Controller 配置为在没有 ingressClassName
的情况下也可以监视 Ingress。
上面的 Amazon EKS、AKS 和 GKE 教程中包含了示例。
如果不是RKE、RKE2 和 K3s
的Kubernetes,你需要按照一下教程安装Ingress Controller
1 | sudo helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx |
安装 Rancher Helm Chart
Rancher 是使用 Kubernetes 的 Helm 包管理器安装的。Helm Chart 为 Kubernetes YAML 清单文件提供了模板语法。通过 Helm,用户可以创建可配置的 deployment,而不仅仅只能使用静态文件。
如果系统无法直接访问互联网,请参见离线环境:Kubernetes 安装。
如果要指定安装的 Rancher 版本,请参见选择 Rancher 版本。
如果要指定用于安装 Rancher 的 Helm 版本,请参见Helm 版本要求。
本安装指南假定你使用的是 Helm 3。
添加 Helm Chart 仓库
操作节点:[server1]
Latest:建议用于试用最新功能
1 | sudo helm repo add rancher-latest https://releases.rancher.com/server-charts/latest |
Stable:建议用于生产环境(本实验实验这个
)
1 | sudo helm repo add rancher-stable https://releases.rancher.com/server-charts/stable |
Alpha:即将发布的实验性预览。
1 | sudo helm repo add rancher-alpha https://releases.rancher.com/server-charts/alpha |
注意:不支持升级到 Alpha 版、从 Alpha 版升级或在 Alpha 版之间升级。
为 Rancher 创建命名空间
1 | kubectl create namespace cattle-system |
选择 SSL 配置
Rancher Management Server 默认需要 SSL/TLS 配置来保证访问的安全性。
你可以从以下三种证书来源中选择一种,用于在 Rancher Server 中设置 TLS:
- Rancher 生成的 TLS 证书:要求你在集群中安装
cert-manager
。Rancher 使用cert-manager
签发并维护证书。Rancher 会生成自己的 CA 证书,并使用该 CA 签署证书。然后cert-manager
负责管理该证书。 - Let’s Encrypt:Let’s Encrypt 选项也需要使用
cert-manager
。但是,在这种情况下,cert-manager 与 Let’s Encrypt 的特殊颁发者相结合,该颁发者执行获取 Let’s Encrypt 颁发的证书所需的所有操作(包括请求和验证)。此配置使用 HTTP 验证(HTTP-01
),因此负载均衡器必须具有可以从互联网访问的公共 DNS 记录。 - 你已有的证书:使用已有的 CA 颁发的公有或私有证书。Rancher 将使用该证书来保护 WebSocket 和 HTTPS 流量。在这种情况下,你必须上传名称分别为
tls.crt
和tls.key
的 PEM 格式的证书以及相关的密钥。如果你使用私有 CA,则还必须上传该 CA 证书。这是由于你的节点可能不信任此私有 CA。Rancher 将获取该 CA 证书,并从中生成一个校验和,各种 Rancher 组件将使用该校验和来验证其与 Rancher 的连接。
配置 | Helm Chart 选项 | 是否需要 cert-manager |
---|---|---|
Rancher 生成的证书(默认) | ingress.tls.source=rancher |
是 |
Let’s Encrypt | ingress.tls.source=letsEncrypt |
是 |
你已有的证书 | ingress.tls.source=secret |
否 |
安装 cert-manager
建议提前下载这个镜像rancher/mirrored-library-traefik:3.3.6
如果你使用自己的证书文件(ingress.tls.source=secret
)或使用外部负载均衡器的 TLS 设置,你可以跳过此步骤。
仅在使用 Rancher 生成的证书(ingress.tls.source=rancher
)或 Let’s Encrypt 颁发的证书(ingress.tls.source=letsEncrypt
)时,才需要安装 cert-manager。
1 | # 如果你手动安装了CRD,而不是在 Helm 安装命令(下面最后一条安装命令)中添加了 `--set installCRDs=true` 选项,你应该在升级 Helm Chart 之前升级 CRD 资源。 |
这里可能要等个一两分钟
1 | sudo kubectl get pods --namespace cert-manager |
1 | [abc@server1 ~]$ sudo kubectl get pods --namespace cert-manager |
如果要卸载就用下面的命令
1 | helm uninstall cert-manager --namespace cert-manager |
根据你选择的证书选项,通过 Helm 安装 Rancher
日期:2025年6月30日
目前他会用到的进行过是rancher/rancher:v2.11.3
但是拉去很慢。那你就用下面的命令,后面如果更新了,我就不知道了,下面是我自己构建的镜像,如果版本变量,你就自己构建镜像,然后自己打tag就行了
1 | sudo docker pull registry.cn-guangzhou.aliyuncs.com/qianyios/rancher:v2.11.3 |
不同的证书配置需要使用不同的 Rancher 安装命令。
但是,无论证书如何配置,Rancher 在 cattle-system
命名空间中的安装名称应该总是 rancher
。
测试和开发:
这个安装 Rancher 的最终命令需要一个将流量转发到 Rancher 的域名。如果你使用 Helm CLI 设置概念证明,则可以在传入
hostname
选项时使用伪域名。伪域名的一个例子是<IP_OF_LINUX_NODE>.sslip.io
,这会把 Rancher 暴露在它运行的 IP 上。生产安装中要求填写真实的域名。
这里就用Rancher 生成的证书
的方式,其他的方式需要自行访问官网根据你选择的证书选项,通过 Helm 安装 Rancher
1 | #添加 Rancher 的 Helm 仓库 |
域名安装方式
默认情况是使用 Rancher 生成 CA,并使用 cert-manager
颁发用于访问 Rancher Server 接口的证书。
由于 rancher
是 ingress.tls.source
的默认选项,因此在执行 helm install
命令时,我们不需要指定 ingress.tls.source
。
- 将
hostname
设置为解析到你的负载均衡器的 DNS 名称。 - 将
bootstrapPassword
设置为admin
用户独有的值。 - 如果你需要安装指定的 Rancher 版本,使用
--version
标志,例如--version 2.7.0
。 - 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将
global.cattle.psp.enabled
设置为false
。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
你要自行更改域名
1 | sudo helm install rancher rancher-stable/rancher \ |
如果你安装的是 alpha 版本,Helm 会要求你在安装命令中添加 --devel
选项:
如果你希望使用域名访问 Rancher,可以在宿主机上配置 hosts
文件,并将 Helm 安装命令中的 hostname
参数改为域名。
NodePort(本实验用这个)
如果你不想配置域名,也可以通过配置 Kubernetes 的 NodePort
或 LoadBalancer
来访问 Rancher。
1 | sudo helm install rancher rancher-stable/rancher \ |
1 | sudo kubectl get pods,svc -n cattle-system |
Rancher的访问地址就是https://192.168.48.200:32684
LoadBalancer
- 如果你的 Kubernetes 环境支持
LoadBalancer
,可以将service.type
设置为LoadBalancer
:
1 | sudo helm install rancher rancher-stable/rancher \ |
等待 Rancher 运行:
1 | kubectl -n cattle-system rollout status |
1 | [root@server1 ~]# kubectl -n cattle-system rollout status deploy/rancher |
Rancher Chart 有许多选项,用于为你的具体环境自定义安装。以下是一些常见的高级方案:
如需获取完整的选项列表,请参见 Chart 选项。
验证 Rancher Server 是否部署成功
1 | kubectl -n cattle-system get deploy rancher |
1 | [root@server1 ~]# kubectl -n cattle-system get deploy rancher |
DESIRED
和 AVAILABLE
的个数应该相同。
页面访问
设置中文
添加已有集群
未完待续
难免会有出错的地方
如果细心的你发现了小失误,可以在下方评论区告诉我,或者私信我!
非常感谢大家的热烈支持!