90DaysOfDevOps 第 53 天:Rancher 概览与动手实践——用 Rancher 统一管理多 Kubernetes 集群
文档/教程【免费下载链接】90DaysOfDevOpsThis 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 --restartunless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher逐参数拆解这条命令的含义参数作用-d后台detached模式运行容器--restartunless-stopped容器退出后自动重启除非被显式停止保证 Rancher 长期可用-p 80:80 -p 443:443将宿主机的 80HTTP与 443HTTPS端口映射到容器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 21 | grep Bootstrap Password:拿到密码后在登录页输入该引导密码进入密码重置页为 admin 账号设置一个新的自定义密码完成设置后即登录成功进入 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桥接到宿主机网卡内存 4GBDay 53 文档末尾特别提醒作者在初版教程中给工作节点分配了 2GB 内存结果节点反复 crash-loopRancher 引导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_VERSION1.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 内置集群占用不能使用示例中命名为vagrantKubernetes 版本可在此指定要使用的版本网络提供方Network Provider及其他启动配置。下一步Rancher 会生成一段节点注册命令registration command需要在每台节点上以对应角色执行。对主节点需要同时启用etcd与controlplane角色sudo docker run -d --privileged --restartunless-stopped --nethost \ -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 存储与控制平面职责。--nethost让 Agent 直接使用宿主机网络-v /etc/kubernetes与-v /var/run挂载则让 Agent 能够写集群配置并与容器运行时通信。只要网络配置正确Rancher 仪表盘会很快显示第一个主节点正在注册、集群正在创建的过程。随后对每个工作节点重复注册流程但角色改为--workersudo docker run -d --privileged --restartunless-stopped --nethost \ -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。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis 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 Day 53使用 Rancher 统一管理 Kubernetes 集群——本地部署、UI 导览与多节点集群实战90DaysOfDevOps Day 53使用 Rancher 统一管理 Kubernetes 集群——本地部署、UI 导览与多节点集群实战 在 90Days文档/教程90DaysOfDevOps 实战 Day 53用 Rancher 实现 Kubernetes 多集群可视化与统一纳管90DaysOfDevOps 实战 Day 53用 Rancher 实现 Kubernetes 多集群可视化与统一纳管 本文以 90DaysOfDevOps文档/教程90DaysOfDevOps 实战Rancher 多集群管理上手——Docker 部署、UI 巡览与自定义集群注册Day 5390DaysOfDevOps 实战Rancher 多集群管理上手——Docker 部署、UI 巡览与自定义集群注册Day 53 本文是 90DaysOfD文档/教程上一篇现代 JavaScript 速查表Modern JavaScript Cheatsheet全解从 ES6 核心语法到异步编程实战下一篇Video2X 实操指南一条命令把视频变高清再插帧到 60fps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考