基于 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文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值