news 2026/10/9 2:37:54

90DaysOfDevOps 第 53 天:Rancher 概览与动手实践——用 Rancher 统一管理多 Kubernetes 集群

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
90DaysOfDevOps 第 53 天:Rancher 概览与动手实践——用 Rancher 统一管理多 Kubernetes 集群
  • 文档/教程

【免费下载链接】90DaysOfDevOps

This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.

项目地址:https://gitcode.com/gh_mirrors/90/90DaysOfDevOps
点击查看免费下载

在 90DaysOfDevOps 的 Kubernetes 学习路线中,前两天的内容都围绕 CLI 与 kubectl 展开;而 Day 53 则引入了 Rancher 这一多集群管理平台,教我们如何在本地以容器方式部署 Rancher、通过 Web UI 接管集群,并用它把三台 Vagrant 虚拟机编排成一个生产级 Kubernetes 集群。读完本篇,你将掌握 Rancher 的部署命令、首登密码获取流程、UI 核心功能(集群总览、Apps & Marketplace、内嵌 kubectl shell),以及基于 Rancher Agent 注册主节点与工作节点的完整实操路径。

Rancher 是什么:面向多集群运维的一站式软件栈

在此之前,我们的 Kubernetes 操作完全依赖命令行:用 kubectl 直接管理集群。但随着集群数量增多,运维团队迫切需要一个可视化的、集中式的管理入口。Rancher 正是一个面向采用容器的团队的完整软件栈,官方对其定位是:

Rancher 是一套面向采用容器的团队的完整软件栈,它解决了在任何基础设施上管理多个 Kubernetes 集群所面临的运维与安全挑战,同时为 DevOps 团队提供了运行容器化负载所需的集成工具。

Rancher 的价值在于:它允许你从几乎任意位置部署生产级 Kubernetes 集群,并提供集中式的认证、访问控制与可观测性。正如前面章节提到的,Kubernetes 的部署选择非常多(云厂商托管服务、自建等),而 Rancher 的意义在于——无论集群运行在哪里,管理体验都是一致的。

部署 Rancher:一条 docker run 命令拉起管理平台

Rancher 的部署方式有多种(官方 Quick-Start Guide 还提供了其他环境的选择),Day 53 选择在本地工作站以 Docker 容器方式运行,这也是最快体验 Rancher UI 的路径:

sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher

逐参数拆解这条命令的含义:

参数作用
-d后台(detached)模式运行容器
--restart=unless-stopped容器退出后自动重启,除非被显式停止,保证 Rancher 长期可用
-p 80:80 -p 443:443将宿主机的 80(HTTP)与 443(HTTPS)端口映射到容器,UI 与 API 均走 HTTPS
--privileged以特权模式运行,赋予容器管理主机资源(如创建嵌套容器、管理 iptables/网络)所需的权限,这是 Rancher 作为集群管理平台的关键前提

执行后,Docker Desktop 中会看到一个正在运行的rancher/rancher容器,同时宿主机上会自动拉起一个本地的 K3s 集群作为 Rancher 的嵌入式 Kubernetes(这一点登录后即可在界面上看到)。

访问 Rancher UI:获取初始密码并完成首登

容器启动后,通过浏览器访问https://localhost即可进入登录页。首次登录需要获取引导密码(bootstrap password),这一步在 Windows 上建议使用 Bash for Windows 来执行 grep 命令(原文档作者即采用此方式):

# 在运行 Rancher 容器的主机上执行,查看初始引导密码 sudo docker logs <rancher-container-id> 2>&1 | grep "Bootstrap Password:"

拿到密码后:

  1. 在登录页输入该引导密码;
  2. 进入密码重置页,为 admin 账号设置一个新的自定义密码;
  3. 完成设置后即登录成功,进入 Rancher 主界面,同时可以看到由 Rancher 自动预置的本地 K3s 集群。

Rancher UI 快速导览:集群总览、应用市场与内嵌 kubectl

登录后的第一个视图是集群工作负载总览。以自动部署的本地 K3s 集群为例,即使尚未部署任何业务,界面上也已经清晰展示了:集群由1 个节点组成、包含5 个默认 Deployment,并实时统计 Pod、CPU 核心数与内存的使用情况。相比纯 CLI,这种可视化让运维人员对集群"正在发生什么"一目了然。

左侧菜单中的Apps & Marketplace(应用市场)是 Rancher 的又一核心能力:它允许你从应用市场选择并一键部署应用。正如前文强调的,Rancher 可同时运行/管理多个集群,市场中的 Helm Chart 可以轻松部署到其中任意一个集群上,大大降低了应用交付的门槛。

此外,界面右上角提供了针对当前所选集群的内嵌 kubectl shell:当需要对 Rancher 管理的任何集群执行底层操作时,无需离开页面即可打开一个 kubectl 终端,直接与目标集群交互——这保留了 CLI 的全部能力,又不必在多个终端环境之间来回切换。

创建新集群(一):Vagrant 准备三节点虚拟机

过去两天我们分别用 minikube(本地单节点)和 Vagrant + VirtualBox(三节点集群)搭建过集群。Rancher 同样具备创建集群的能力,本节的思路是:让 Vagrant 只负责准备虚拟机与基础工具,集群的创建与节点加入完全交给 Rancher 完成。

在仓库的 Kubernetes/Rancher 目录 中,提供了与之前相同的三节点 Vagrant 配置,但刻意移除了手动执行 kubeadm init/join 的步骤——节点上仍会安装 Docker、kubeadm、kubectl 等组件,却不会自行组建集群,从而把"建集群"这件事让位给 Rancher。

进入该目录执行vagrant up,即可在 VirtualBox 中创建 3 台虚拟机。从 Vagrantfile 的源码可以看到关键配置:

NUM_WORKER_NODES = 2 IP_NW = "192.168.169." IP_START = 130 config.vm.box = "bento/ubuntu-21.10" config.vm.define "master" do |master| master.vm.hostname = "master-node" master.vm.network :public_network, bridge: "...", ip: IP_NW + "#{IP_START}" master.vm.provider "virtualbox" do |vb| vb.memory = 4048 # 主节点 4GB 内存 vb.cpus = 2 end master.vm.provision "shell", path: "scripts/common.sh" end

值得注意的两点源码细节:

  • IP 规划:主节点为192.168.169.130,两个工作节点依次为131、132(由IP_START递增),并通过public_network桥接到宿主机网卡;
  • 内存 4GB:Day 53 文档末尾特别提醒,作者在初版教程中给工作节点分配了 2GB 内存,结果节点反复 crash-loop;Rancher 引导(bootstrap)节点要求虚拟机至少4GB 内存,仓库中的 Vagrantfile 已据此将 master 与 worker 节点统一设置为vb.memory = 4048。

每个节点都会执行 scripts/common.sh,它负责的初始化工作包括:

  • swapoff -a关闭交换分区,并注释/etc/fstab中的 swap 条目使其重启后仍保持关闭;
  • 加载br_netfilter、overlay内核模块,并写入net.bridge.bridge-nf-call-iptables、net.ipv4.ip_forward等 sysctl 参数,让 iptables 能看到桥接流量;
  • 干净安装 Docker Engine(先卸载旧包,再添加 Docker 官方 GPG key 与 stable 源);
  • 初始化 containerd 配置(containerd config default)并重启服务;
  • 安装并apt-mark hold固定kubelet、kubeadm、kubectl版本(KUBERNETES_VERSION="1.23.3-00")。

对比仓库中另一份手把手建集群的 scripts/master.sh(包含kubeadm init、Calico 网络插件、Metrics Server 与 Dashboard 安装),可以清晰看出 Rancher 方案中的 common.sh止步于"装好工具",不执行任何 kubeadm 建群命令——这正是把集群编排权交给 Rancher 的设计意图。

创建新集群(二):通过 Rancher 注册节点

虚拟机就绪后,回到 Rancher UI 创建新集群。创建流程的第一步是选择集群所在位置(云厂商托管 Kubernetes、vSphere 或其他),Day 53 选择Custom(自定义),因为我们不使用内置集成平台。

在定义页中需要填写:

  • 集群名称:界面默认显示local,但该名称已被 Rancher 内置集群占用,不能使用;示例中命名为vagrant;
  • Kubernetes 版本:可在此指定要使用的版本;
  • 网络提供方(Network Provider)及其他启动配置。

下一步,Rancher 会生成一段节点注册命令(registration command),需要在每台节点上以对应角色执行。对主节点,需要同时启用etcd与controlplane角色:

sudo docker run -d --privileged --restart=unless-stopped --net=host \ -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run \ rancher/rancher-agent:v2.6.3 \ --server https://10.0.0.1 \ --token mpq8cbjjwrj88z4xmf7blqxcfmwdsmq92bmwjpphdkklfckk5hfwc2 \ --ca-checksum a81944423cbfeeb92be0784edebba1af799735ebc30ba8cbe5cc5f996094f30b \ --etcd --controlplane

命令中的关键参数:--server指向 Rancher 管理地址;--token与--ca-checksum用于节点与 Rancher 之间的双向身份认证,保证只有持有效令牌的节点才能加入;--etcd --controlplane声明该节点承担 etcd 存储与控制平面职责。--net=host让 Agent 直接使用宿主机网络,-v /etc/kubernetes与-v /var/run挂载则让 Agent 能够写集群配置并与容器运行时通信。

只要网络配置正确,Rancher 仪表盘会很快显示第一个主节点正在注册、集群正在创建的过程。随后对每个工作节点重复注册流程,但角色改为--worker:

sudo docker run -d --privileged --restart=unless-stopped --net=host \ -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run \ rancher/rancher-agent:v2.6.3 \ --server https://10.0.0.1 \ --token mpq8cbjjwrj88z4xmf7blqxcfmwdsmq92bmwjpphdkklfckk5hfwc2 \ --ca-checksum a81944423cbfeeb92be0784edebba1af799735ebc30ba8cbe5cc5f996094f30b \ --worker

等待一段时间后,集群即进入运行状态。至此,我们已经拥有了一个由 Rancher 全程编排的三节点 Kubernetes 集群,并且可以直接借助 Apps & Marketplace 向其中部署应用。配合仓库内 Kubernetes/Rancher 目录中现成的 Vagrantfile 与 scripts/common.sh,整套"Vagrant 起机器、Rancher 建集群"的流程可以完整复现。

经验提醒:Rancher 节点引导的内存门槛

Day 53 在文末特别补充了一条实战教训:Rancher 节点引导要求虚拟机具备 4GB 内存,否则节点会陷入 crash-loop。作者的原始部署中工作节点只有 2GB 内存,随后已按此要求修正。这也解释了仓库 Vagrantfile 中所有节点统一配置 4GB 的原因——无论是复现本教程还是自建环境,都建议为每个待注册节点预留至少 4GB 内存。

本系列的后续展望

过去三天,我们用三种不同方式完成了 Kubernetes 集群的搭建(minikube、Vagrant 手工建群、Rancher 托管建群)。接下来的学习重心将转向应用侧——这也是平台中最关键的部分。Day 53 预告了后续即将深入的主题清单:

  • Kubernetes Architecture(架构)
  • Kubectl Commands(命令)
  • Kubernetes YAML(声明式配置)
  • Kubernetes Ingress(入口流量)
  • Kubernetes Services(服务暴露)
  • Helm Package Manager(包管理)
  • Persistent Storage(持久化存储)
  • Stateful Apps(有状态应用)

明天(Day 54)将进行第二次集群部署的动手实践,随后开始把应用真正部署进集群。仓库中 Kubernetes 目录 已经备好了后续会用到的示例资源,例如无状态演示 nginx-stateless-demo.yaml、Ingress 示例 pacman-ingress.yaml、有状态应用 pacman-stateful-demo.yaml 与 statefulset.yaml,可作为后续章节的预习材料。下一节内容见 Day 54。

  • 文档/教程

【免费下载链接】90DaysOfDevOps

This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.

项目地址:https://gitcode.com/gh_mirrors/90/90DaysOfDevOps
点击查看免费下载
上一篇:现代 JavaScript 速查表(Modern JavaScript Cheatsheet)全解:从 ES6 核心语法到异步编程实战
下一篇:Video2X 实操指南:一条命令把视频变高清,再插帧到 60fps

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 2:37:11

OptiScaler 快速上手:三步让只认 DLSS 的游戏跑上 AMD 显卡

OptiScaler 快速上手&#xff1a;三步让只认 DLSS 的游戏跑上 AMD 显卡 【免费下载链接】OptiScaler OptiScaler bridges upscaling/frame gen across GPUs. Supports DLSS2/XeSS/FSR2 inputs, replaces native upscalers, enables FSR-FG/XeFG on non-FG titles. Supports Nuk…

作者头像 李华
网站建设 2026/10/9 2:36:19

Git Reset完全指南:三种模式、误操作恢复与团队协作避坑

我见过太多人在 Git 里"点错一个按钮就心态爆炸"的场景。最常见的翻车操作就是git reset&#xff0c;尤其是git reset --hard。群里喊"代码没了怎么找回"的人&#xff0c;十有八九都是先执行了git reset --hard&#xff0c;随后才发现工作区里那些没提交的…

作者头像 李华