基于 Rancher 部署 Kubernetes 集群的工程实践指南

一、现状分析

在当今的云计算和容器化领域,Kubernetes(K8S)已经成为了容器编排和管理的事实标准。根据 Gartner 的数据,超过 70% 的企业在生产环境中使用 K8S 来管理容器化应用。然而,K8S 的安装和管理对于许多企业来说仍然是一个挑战,尤其是在需要部署多套不同版本 K8S 集群的场景下。

K3S 作为一个轻量级的 K8S 发行版,以其快速部署、资源占用少等特点,受到了越来越多企业的青睐。而 Rancher 则提供了一个统一的管理平台,可以方便地在不同的基础设施上部署和管理 K8S 集群。通过结合 K3S 和 Rancher,我们可以实现高效、灵活的多套 K8S 集群部署。

(我们生产的业务也是这样部署的)

二、核心原理

K3S 原理

K3S 是一个经过简化的 K8S 发行版,它去除了一些不必要的组件,如 cloud provider 等,同时采用了 SQLite 作为默认的 etcd 替代方案,从而大大减少了资源占用。K3S 的架构主要包括 Server 和 Agent 两部分,Server 负责管理集群的状态和调度,Agent 则负责运行容器化应用。

Rancher 原理

Rancher 是一个开源的容器管理平台,它通过提供一个统一的用户界面和 API,允许用户在不同的基础设施上部署、管理和监控 K8S 集群。Rancher 采用了多租户架构,可以为不同的用户和团队提供独立的管理空间。

架构原理

我们的架构采用 K3S 作为底层的 K8S 发行版,通过 Rancher 来管理多套 K8S 集群。物理节点作为 Agent 加入到 K8S 集群中,Rancher 则可以在这些集群上部署K8S集群和节点

+---------------------+ 
|      K8S节点        | 
+---------------------+ | | 
+---------------------+ 
|     Rancher        | 
|  (管理多套 K8S)    | 
+---------------------+ | | 
+---------------------+ 
|      K3S           | 
+---------------------+ 

三、环境准备

硬件环境

  • 至少 3 台物理节点,每台节点需要满足以下配置:
    • CPU:2 核以上
    • 内存:4GB 以上
    • 硬盘:20GB 以上

软件环境

  • 操作系统:Ubuntu 18.04 或以上版本
  • Docker:安装最新稳定版本
  • 网络:节点之间需要能够互相通信

安装 Docker

# 更新系统包 
sudo apt update 
# 安装必要的依赖 
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y 
# 添加 Docker 官方 GPG 密钥 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg  | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg  
# 添加 Docker 软件源 
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list  > /dev/null 
# 更新系统包 
sudo apt update 
# 安装 Docker 
sudo apt install docker-ce docker-ce-cli containerd.io  -y 
# 启动 Docker 并设置开机自启 
sudo systemctl start docker 
sudo systemctl enable docker 

四、分步实现

1 安装 K3S

在一台虚拟机安装 K3S Server:

curl -sfL https://get.k3s.io  | sh - 

在其他物理节点上安装 K3S Agent,并加入到 K3S Server:

# 获取 K3S Server 的 token 
sudo cat /var/lib/rancher/k3s/server/node-token 
# 在 Agent 节点上安装 K3S Agent 
curl -sfL https://get.k3s.io  | K3S_URL=https://<server_ip>:6443 K3S_TOKEN=<token> sh - 

2 安装 Rancher

在 K3S 集群上安装 Rancher:

# 创建命名空间 
kubectl create namespace cattle-system 
# 安装 Cert-Manager 
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.crds.yaml  
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml  
# 安装 Rancher 
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable  
helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostname=rancher.yourdomain.com  \ --set ingress.tls.source=letsEncrypt  \ --set letsEncrypt.email=your_email@example.com  

3 通过 Rancher 部署多套 K8S 集群

3.1 硬件资源

  • 、基础硬件配置规范
  • 控制平面节点(Master)
    • CPU:4核(推荐 Intel Xeon Silver 4210 或同级)
    • 内存:16GB DDR4 ECC(支持内存纠错)
    • 存储:2×480GB SSD RAID1(系统盘)+ 2×1TB NVMe SSD RAID0(数据盘)2
    • 网络:双万兆网卡(建议 Mellanox ConnectX-5)
  • master也可以使用虚拟机 配置低点也可以
  • Worker 节点(物理机)
    • CPU:16核(推荐 AMD EPYC 7302P 或同级,支持 NUMA 架构)
    • 内存:64GB DDR4(根据业务负载可扩展至 256GB)
    • 存储
      • 系统盘:2×480GB SSD RAID1
      • 数据盘:
        • 场景1(常规应用):4×3.84TB SATA SSD RAID10(IOPS 50万+)
        • 场景2(AI/大数据):4×7.68TB NVMe SSD RAID0(顺序读写 6GB/s+)1
    • 网络:25Gbps 双端口网卡(支持 RDMA 加速)
    • work 节点配置一定要高点 (这里配提供GPU显卡,可以单独选配)

3.2软件系统

  • 操作系统:所有节点需安装相同的 Linux 发行版,推荐使用 CentOS 7.x 或 Ubuntu 18.04 及以上版本。安装时确保系统是最新状态,可通过执行系统更新命令更新软件包。

3.3 访问控制台

通过 https://rancher.yourdomain.com 访问,首次登录需执行:

3.3.1 自定义集群配置 (这里比较重要的是K8S的模版,涉及一些重点参数)
cluster:name: prod-cluster kubernetesVersion: v1.24.9 network:plugin: calico cloudProvider:name: external 
nodes:- address: 192.168.1.101 role: [controlplane,etcd,worker]- address: 192.168.1.102 role: [worker]
3.3.2 通过页面添加自定义集群 (WEB来配置 )实际也是用于生成自定义集群配置 YML文件的

通过UI导入YAML或使用Rancher CLI创建5

3.4 节点注册流程

  1. 在Rancher UI选择添加集群 → 自定义
  2. 复制生成的注册命令:
# Control Plane节点执行 
docker run -d --privileged --restart=unless-stopped \--net=host -v /etc/kubernetes:/etc/kubernetes \-v /var/run:/var/run rancher/rancher-agent:v2.7.0 \--server https://rancher.yourdomain.com  \--token <YOUR_TOKEN> \--etcd --controlplane --worker 

五、故障排查

5.1 常见问题处理

现象解决方案
节点注册超时检查防火墙规则和端口开放情况2
证书错误更新cert-manager至最新版1
镜像拉取失败配置国内镜像加速源4
资源不足调整kubelet参数--kube-reserved5

5.2 诊断命令集

# 检查集群状态 
kubectl get nodes -o wide 
# 查看组件日志 
journalctl -u kubelet -f 
# 网络连通性测试 
kubectl run -it --rm test --image=alpine ping <pod-ip>

六、延伸实践

  1. 混合云管理:通过Rancher Fleet同步管理多个集群5
  2. 安全加固:集成OPA/Gatekeeper策略引擎
  3. CI/CD流水线:结合Jenkins实现自动部署
  4. 监控告警:部署Prometheus-Operator监控栈

完整部署示例代码库:rancher-examples
生产检查清单:Rancher Hardening Guide

高可用安装指南 | Rancher文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows服务器提权实战:常见方法、场景与防御指南

在渗透测试中&#xff0c;​​权限提升&#xff08;提权&#xff09;​​是从低权限账户&#xff08;如IIS、Apache运行账户&#xff09;获取系统管理员&#xff08;如SYSTEM&#xff09;权限的关键步骤。本文将从实战角度解析Windows服务器提权的常见技术&#xff0c;并结合真…

C# | 基于C#实现的BDS NMEA-0183数据解析上位机

以下是一个基于C#实现的BDS NMEA-0183数据解析上位机的示例代码,包含基础功能和界面: using System; using System.Collections.Generic; using System.IO.Ports; using System.Windows.Forms; using System.Drawing; using System.Globalization;namespace BDS_NMEA_Viewer…

图像增强技术:从基础原理到企业级开发实战

简介 图像增强技术是提升图像质量、改善视觉效果和提高后续处理效果的核心方法。本文将全面解析图像增强的五大核心技术:灰度级修正、图像平滑、图像锐化、图像伪彩色处理和图像几何校正,并提供基于OpenCV和Elasticmagic的完整企业级开发实战代码。通过系统化的知识整理和可…

解决中文乱码:字符编码全攻略 - ASCII、Unicode、UTF-8、GB2312详解

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

体系学习1:C语言与指针1——预定义、进制打印、传参为数组

1、不对一段代码进行编译 #if 0 statement #endif2、输出地址 int d[3]{1,2,3}; printf("%p",(void*)d);//p期待的是void*类型的数据3、不同进制的打印 int data 1200; char hed[9];//为\0预留位置&#xff01;&#xff01;&#xff01; sprintf(hed,"%08X&…

Java 基础--数组(Array):存储数据的“排排坐”

作者&#xff1a;IvanCodes 发布时间&#xff1a;2025年5月1日&#x1f913; 专栏&#xff1a;Java教程 大家好&#xff01;&#x1f44b; 咱们在编程时&#xff0c;经常需要处理一批相同类型的数据&#xff0c;比如班级里所有同学的成绩 &#x1f4af;、一周每天的最高气温 …

CSS常用属性_(进阶)

目录 1.尺寸单位与颜色 &#xff08;1&#xff09;尺寸 &#xff08;2&#xff09;颜色 常用2种 &#xff08;3&#xff09;颜色属性值&#xff08;透明度&#xff09; 例如&#xff1a; 2.字体属性font 例如&#xff1a; **顺序 3.文本属性 ​编辑例如&#xff1a; …

【RabbitMQ】保证消息不丢失

要确保 RabbitMQ 在消费者&#xff08;Python 服务&#xff09;重启或挂掉时消息不丢失&#xff0c;需结合 消息持久化、确认机制&#xff08;ACK&#xff09; 和 死信队列&#xff08;DLX&#xff09; 实现高可靠性&#xff1a; 1. 消息持久化&#xff08;Durability&#xff…

Python基本语法(控制语句)

#控制语句 Python语言的控制语句和其他编程语言类似&#xff0c;常用的有if…else、while、for语句。 案例2一7控制语句 第1组代码&#xff0c;说明if-else语句&#xff1a; #1 print(\n1,if) x,y,z10,20,5 if x>y:print(x>y) else:print(x<y)输出结果: 1,if x<…

并发设计模式实战系列(10):Balking(犹豫模式)

&#x1f31f; 大家好&#xff0c;我是摘星&#xff01; &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第10章Balking&#xff08;犹豫模式&#xff09;&#xff0c;废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 状态守护机制 2. 与状态模式的…

【强化学习系列】贝尔曼方程

首先回顾状态价值函数和动作价值函数的定义&#xff1a; 状态价值函数 v π ( s ) v_\pi(s) vπ​(s)是从状态 s s s出发&#xff0c;直至一幕结束后获得的回报的期望值 动作价值函数 q π ( s , a ) q_\pi(s,a) qπ​(s,a)是从状态 s s s出发&#xff0c;采取动作 a a a后&…

donet使用指定版本sdk

ps:来自微软官方方案,实测可行,就是在项目任意目录下在新建 global.json,并配置sdk版本 SDK 使用最新安装的版本 SDK 命令包括 dotnet new 和 dotnet run。 .NET CLI 必须为每个 dotnet 命令选择一个 SDK 版本。 即使在以下情况下&#xff0c;它也会默认使用计算机上安装的最新…

x-cmd install | Orbiton:极简至上的终端文本编辑器与轻量级 IDE

目录 核心特点安装适用场景优势 厌倦了臃肿复杂的 IDE&#xff1f;渴望一个轻巧、快速、专注的编码环境&#xff1f;Orbiton&#xff0c;一款极简主义的终端文本编辑器与轻量级 IDE&#xff0c;将带给你前所未有的编码体验。 核心特点 极简主义&#xff0c;专注编码&#xff1…

大脑、机器人与贝叶斯信念及AI推理

在机器不再局限于重复性任务的世界里&#xff0c;机器人技术已经大胆地迈入了感知、学习和决策的领域。这篇文章探讨了智能机器人系统是如何构建的——从理解它们嘈杂的传感器和不确定的环境&#xff0c;到使它们能够做出明智的选择并随着时间的推移调整自己的行为。 AI推理 …

线上婚恋相亲小程序源码介绍

​基于ThinkPHP、FastAdmin和UniApp开发的线上婚恋相亲小程序源码&#xff0c;这款小程序源码采用了ThinkPHP作为后端框架&#xff0c;其强大的功能与良好的扩展性为程序的稳定运行提供了保障。 ​FastAdmin作为后台管理框架&#xff0c;使得管理员能够便捷地对用户信息、相亲…

长短期记忆(LSTM)简介

RNN 的主要限制在于它无法记住很长的序列&#xff0c;并且会陷入梯度消失的问题。 什么是梯度消失问题&#xff1f; 当添加更多具有某些激活函数的层时&#xff0c;神经网络中损失函数的梯度趋近于零&#xff0c;这使得网络难以训练。 长短期记忆&#xff08;LSTM&#xff09;…

JESD204B 探究

JESD204B协议是高速串行接口标准,主要用于ADC/DAC与逻辑器件(如FPGA)之间的数据传输。以下为综合解析: 一、协议概述 ‌核心作用‌ 通过高速SERDES技术实现数模转换器与逻辑器件间的高效数据传输,支持多通道同步和确定性延迟,适用于GB级吞吐量场景23。‌版本演进‌ JESD2…

Flutter PIP 插件 ---- 新增PipActivity,Android 11以下支持自动进入PIP Mode

接上文 Flutter PIP 插件 ---- Android 项目地址 PIP&#xff0c; pub.dev也已经同步发布 pip 0.0.3&#xff0c;你的加星和点赞&#xff0c;将是我继续改进最大的动力 开发文档 Add videos using picture-in-picture (PiP)介绍PIP功能从 Android 8.0 (API level 26) 引入&…

【Java开发日记】6个Java 工具,轻松分析定位 JVM 问题 !

目录 使用 JDK 自带工具查看 JVM 情况 jps jinfo jvisualvm jcm 使用 JDK 自带工具查看 JVM 情况 JDK 自带了很多命令行甚至是图形界面工具&#xff0c;帮助查看 JVM 的一些信息。比如&#xff0c;在机器上运行 ls 命令&#xff0c;可以看到 JDK 8 提供了非常多的工具或程…

动态规划简单题2

leetcode91题&#xff08;解码方法&#xff09; 分析题目&#xff1a; 1.这是一种解码&#xff0c;就是给多个数字组成的字符串&#xff0c;把这些数字解码成字母&#xff0c;看看一共有多少种 2.如果一个数字前有前导0就不合法&#xff0c;比如06&#xff0c;这与6不同&…