本文档风哥主要介绍Rancher Fleet多集群应用分发与升级实战,包括Rancher数据库Fleet概念、Rancher数据库Fleet架构、Rancher数据库Bundle概念、Rancher数据库Fleet准备、Rancher数据库Fleet要求、Rancher数据库Fleet规划、Rancher数据库安装Fleet、Rancher数据库配置Fleet、Rancher数据库分发应用、Rancher数据库升级应用、Rancher数据库回滚应用、Rancher数据库监控Fleet等内容,风哥教程参考Rancher官方文档Fleet、多集群管理、应用分发等内容,适合运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 Rancher数据库Fleet概念
Rancher数据库Fleet是Rancher提供的多集群应用分发和管理工具。Fleet可以同时管理多个Kubernetes集群,实现应用的统一部署、升级和回滚。Fleet使用GitOps模式,通过Git仓库管理应用配置,实现应用的自动化部署和版本控制。Fleet支持多种部署策略,如滚动更新、蓝绿部署等。更多视频教程www.fgedu.net.cn
- 多集群管理:同时管理多个集群
- 统一部署:统一部署应用
- GitOps模式:通过Git管理配置
- 版本控制:支持应用版本控制
- 部署策略:支持多种部署策略
1.2 Rancher数据库Fleet架构
Rancher数据库Fleet架构:
┌─────────────────────────────────────────────────────────┐
│ Rancher Server │
│ 192.168.1.100 │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Fleet Manager │ │
│ │ – Git Repository │ │
│ │ – Bundle Management │ │
│ │ – Deployment Strategy │ │
│ │ – Version Control │ │
│ └───────────────────────────────────────────────┘ │
└────────────────────┬────────────────────────────────────┘
│
│ Fleet Agent
↓
┌─────────────────────────────────────────────────────────┐
│ Managed Clusters │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Cluster 1 (EKS) │ │
│ │ – Fleet Agent │ │
│ │ – Bundle 1 │ │
│ │ – Bundle 2 │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Cluster 2 (ACK) │ │
│ │ – Fleet Agent │ │
│ │ – Bundle 1 │ │
│ │ – Bundle 2 │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Cluster 3 (RKE2) │ │
│ │ – Fleet Agent │ │
│ │ – Bundle 1 │ │
│ │ – Bundle 2 │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
# 架构说明
1. Rancher Server:提供Fleet管理界面
2. Fleet Manager:管理多集群应用分发
3. Fleet Agent:部署在每个集群中
4. Managed Clusters:被管理的集群
5. Bundle:应用包,包含应用配置
1.3 Rancher数据库Bundle概念
Rancher数据库Bundle是Fleet中用于分发应用的单元。Bundle包含了一个或多个Helm Chart、Kubernetes资源或自定义资源。Bundle支持版本控制,可以轻松升级和回滚应用。Bundle可以配置部署目标集群、部署策略、依赖关系等。学习交流加群风哥微信: itpux-com
- 应用包:包含应用配置
- 版本控制:支持版本控制
- 部署目标:配置目标集群
- 部署策略:配置部署策略
- 依赖管理:管理应用依赖
Part02-生产环境规划与建议
2.1 Rancher数据库Fleet准备
Rancher数据库Fleet准备:
# 1. Rancher Server准备
– Rancher Server已部署
– Rancher Server可访问
– Rancher Server配置正确
# 2. 集群准备
– 集群已导入Rancher
– 集群状态正常
– 集群网络互通
– 集群资源充足
# 3. Git仓库准备
– Git仓库已创建
– Git仓库可访问
– Git仓库配置正确
# 4. 应用需求分析
– 确定应用类型
– 确定应用版本
– 确定应用配置
– 确定应用依赖
# 5. 部署策略规划
– 确定部署策略
– 确定部署顺序
– 确定部署时间
– 确定回滚策略
2.2 Rancher数据库Fleet要求
Rancher数据库Fleet要求:
# Rancher Server要求
– Rancher版本:>= v2.7.0
– Fleet版本:>= v0.9.0
– 资源要求:CPU >= 2核,内存 >= 4GB
# 集群要求
– Kubernetes版本:>= v1.23.0
– 集群状态:Active
– 网络互通:集群之间网络互通
– 资源充足:集群资源充足
# Git仓库要求
– Git类型:GitLab、GitHub、Bitbucket
– 访问权限:可访问
– 分支管理:支持分支管理
– Webhook:支持Webhook
# 应用要求
– 应用类型:Helm Chart、Kubernetes资源
– 应用版本:明确具体
– 应用配置:明确具体
– 应用依赖:明确具体
# 部署策略要求
– 部署策略:滚动更新、蓝绿部署
– 部署顺序:明确具体
– 部署时间:明确具体
– 回滚策略:明确具体
2.3 Rancher数据库Fleet规划
Rancher数据库Fleet规划:
# 集群规划
集群1:fgedu-eks-cluster(EKS集群)
集群2:fgedu-ack-cluster(ACK集群)
集群3:fgedu-rke2-cluster(RKE2集群)
# Git仓库规划
Git仓库:git.fgedu.net.cn/fgedu/fleet-bundles
分支:main、dev、test
# 应用规划
应用1:Nginx(Web服务器)
应用2:MySQL(数据库)
应用3:Redis(缓存)
# Bundle规划
Bundle 1:fgedu-nginx-bundle
– Nginx Chart
– 配置文件
Bundle 2:fgedu-mysql-bundle
– MySQL Chart
– 配置文件
Bundle 3:fgedu-redis-bundle
– Redis Chart
– 配置文件
# 部署策略规划
部署策略:滚动更新
部署顺序:Nginx -> MySQL -> Redis
部署时间:凌晨2点
回滚策略:自动回滚
Part03-生产环境项目实施方案
3.1 Rancher数据库安装Fleet
3.1.1 Rancher数据库通过Web界面启用Fleet
# 步骤1:登录Rancher管理界面
# 步骤2:点击”集群管理” – “Fleet”
# 步骤3:点击”启用Fleet”按钮
# 步骤4:选择集群:
# fgedu-eks-cluster
# fgedu-ack-cluster
# fgedu-rke2-cluster
# 步骤5:点击”启用”按钮
# 通过CLI启用Fleet
[root@rancher ~]# kubectl create namespace fleet-system
namespace/fleet-system created
[root@rancher ~]# helm repo add rancher-fleet https://charts.rancher.io
“rancher-fleet” has been added to your repositories
[root@rancher ~]# helm repo update
Hang tight while we grab the latest from your chart repositories…
…Successfully got an update from the “rancher-fleet” chart repository
Update Complete. ⎈Happy Helming!⎈
[root@rancher ~]# helm install fleet-agent rancher-fleet/fleet-agent \
–namespace fleet-system \
–set clusterLabels={“environment”:”fgedu”} \
–set apiURL=https://192.168.1.100
NAME: fleet-agent
LAST DEPLOYED: Fri Apr 10 10:00:00 2026
NAMESPACE: fleet-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The Fleet Agent has been installed successfully!
# 查看Fleet Agent状态
[root@rancher ~]# kubectl get pods -n fleet-system
NAME READY STATUS RESTARTS AGE
fleet-agent-1234567890-abcde 1/1 Running 0 1m
fleet-controller-1234567890-abcde 1/1 Running 0 1m
fleet-1234567890-abcde 1/1 Running 0 1m
# 查看集群注册状态
[root@rancher ~]# kubectl get clusters.fleet.cattle.io
NAME READY JOINED AGE
fgedu-eks True True 1m
fgedu-ack True True 1m
fgedu-rke2 True True 1m
3.2 Rancher数据库配置Fleet
3.2.1 Rancher数据库配置Git仓库
# 步骤1:登录Rancher管理界面
# 步骤2:点击”集群管理” – “Fleet” – “Git仓库”
# 步骤3:点击”添加仓库”按钮
# 步骤4:填写仓库信息:
# 仓库名称:fgedu-fleet-repo
# 仓库URL:git.fgedu.net.cn/fgedu/fleet-bundles
# 分支:main
# 认证方式:用户名密码
# 用户名:fgedu
# 密码:Git@123456
# 步骤5:点击”创建”按钮
# 通过CLI配置Git仓库
[root@rancher ~]# cat <
Annotations:
API Version: fleet.cattle.io/v1alpha1
Kind: GitRepo
Metadata:
Creation Timestamp: 2026-04-10T10:00:00Z
Generation: 1
Resource Version: 1234567890
UID: 12345678-90ab-cdef-1234-567890abcdef
Spec:
Branch: main
Client Secret Name: git-credentials
Paths:
./bundles
Repo: https://git.fgedu.net.cn/fgedu/fleet-bundles
Targets:
Cluster Selector:
Match Labels:
Environment: fgedu
Status:
Conditions:
Last Transition Time: 2026-04-10T10:00:00Z
Message: GitRepo is ready
Reason: GitRepoReady
Status: True
Type: Ready
Ready: true
Repo: https://git.fgedu.net.cn/fgedu/fleet-bundles
Revision: main
3.3 Rancher数据库分发应用
3.3.1 Rancher数据库创建Bundle
[root@rancher ~]# mkdir -p fleet-bundles/bundles/fgedu-nginx-bundle
[root@rancher ~]# cd fleet-bundles/bundles/fgedu-nginx-bundle
# 创建Chart.yaml文件
[root@rancher fgedu-nginx-bundle]# cat > Chart.yaml <
# 查看Bundle状态
[root@rancher ~]# kubectl get bundles.fleet.cattle.io -n fleet-system
NAME READY AGE
fgedu-nginx-bundle True 1m
# 查看Bundle详情
[root@rancher ~]# kubectl describe bundle fgedu-nginx-bundle -n fleet-system
Name: fgedu-nginx-bundle
Namespace: fleet-system
Labels:
Annotations:
API Version: fleet.cattle.io/v1alpha1
Kind: Bundle
Metadata:
Creation Timestamp: 2026-04-10T10:00:00Z
Generation: 1
Resource Version: 1234567890
UID: 12345678-90ab-cdef-1234-567890abcdef
Spec:
Resources:
Chart:
Name: fgedu-nginx-bundle
Path: ./bundles/fgedu-nginx-bundle
Repo: https://git.fgedu.net.cn/fgedu/fleet-bundles
Repo Type: git
Version: 1.0.0
Helm:
Values: replicaCount: 3
image:
tag: “1.25.3”
service:
type: LoadBalancer
Name: fgedu-nginx
Targets:
Cluster Selector:
Match Labels:
Environment: fgedu
Status:
Conditions:
Last Transition Time: 2026-04-10T10:00:00Z
Message: Bundle is ready
Reason: BundleReady
Status: True
Type: Ready
Ready: true
# 查看部署状态
[root@rancher ~]# kubectl get appdeployments.fleet.cattle.io -n fleet-system
NAME CLUSTERS READY AGE
fgedu-nginx 3 True 1m
# 查看应用状态
[root@rancher ~]# kubectl get deployments -A -l app=fgedu-nginx
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
fgedu-dev fgedu-nginx 3/3 3 3 1m
fgedu-test fgedu-nginx 3/3 3 3 1m
fgedu-prod fgedu-nginx 3/3 3 3 1m
Part04-生产案例与实战讲解
4.1 Rancher数据库升级应用
4.1.1 Rancher数据库升级Bundle
[root@rancher fgedu-nginx-bundle]# cat > Chart.yaml <
# 查看Bundle升级状态
[root@rancher ~]# kubectl get bundles.fleet.cattle.io -n fleet-system
NAME READY AGE
fgedu-nginx-bundle True 5m
# 查看应用升级状态
[root@rancher ~]# kubectl get deployments -A -l app=fgedu-nginx
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
fgedu-dev fgedu-nginx 5/5 5 5 5m
fgedu-test fgedu-nginx 5/5 5 5 5m
fgedu-prod fgedu-nginx 5/5 5 5 5m
# 查看Pod状态
[root@rancher ~]# kubectl get pods -A -l app=fgedu-nginx
NAMESPACE NAME READY STATUS RESTARTS AGE
fgedu-dev fgedu-nginx-1234567890-abcde 1/1 Running 0 2m
fgedu-dev fgedu-nginx-1234567890-fghij 1/1 Running 0 2m
fgedu-dev fgedu-nginx-1234567890-klmno 1/1 Running 0 2m
fgedu-dev fgedu-nginx-2345678901-abcde 1/1 Running 0 2m
fgedu-dev fgedu-nginx-2345678901-fghij 1/1 Running 0 2m
4.2 Rancher数据库回滚应用
4.2.1 Rancher数据库回滚Bundle
[root@rancher fgedu-nginx-bundle]# cat > Chart.yaml <
# 查看Bundle回滚状态
[root@rancher ~]# kubectl get bundles.fleet.cattle.io -n fleet-system
NAME READY AGE
fgedu-nginx-bundle True 10m
# 查看应用回滚状态
[root@rancher ~]# kubectl get deployments -A -l app=fgedu-nginx
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
fgedu-dev fgedu-nginx 3/3 3 3 10m
fgedu-test fgedu-nginx 3/3 3 3 10m
fgedu-prod fgedu-nginx 3/3 3 3 10m
4.3 Rancher数据库监控Fleet
4.3.1 Rancher数据库查看Fleet状态
[root@rancher ~]# kubectl get gitrepos.fleet.cattle.io -n fleet-system
NAME REVISION READY AGE
fgedu-fleet-repo main True 10m
# 查看Bundle状态
[root@rancher ~]# kubectl get bundles.fleet.cattle.io -n fleet-system
NAME READY AGE
fgedu-nginx-bundle True 10m
# 查看AppDeployment状态
[root@rancher ~]# kubectl get appdeployments.fleet.cattle.io -n fleet-system
NAME CLUSTERS READY AGE
fgedu-nginx 3 True 10m
# 查看集群状态
[root@rancher ~]# kubectl get clusters.fleet.cattle.io
NAME READY JOINED AGE
fgedu-eks True True 10m
fgedu-ack True True 10m
fgedu-rke2 True True 10m
# 通过Web界面查看Fleet状态
# 步骤1:登录Rancher管理界面
# 步骤2:点击”集群管理” – “Fleet”
# 步骤3:查看Git仓库状态
# 步骤4:查看Bundle状态
# 步骤5:查看AppDeployment状态
# 步骤6:查看集群状态
Part05-风哥经验总结与分享
5.1 Rancher数据库Fleet最佳实践
Rancher数据库Fleet最佳实践:
- GitOps模式:使用GitOps模式,通过Git仓库管理应用配置
- 版本控制:使用版本控制,管理应用版本
- 测试验证:在测试环境充分测试后再部署到生产环境
- 部署策略:选择合适的部署策略,如滚动更新
- 监控告警:配置监控告警,及时发现和处理问题
- 文档记录:记录部署过程和配置
- 定期检查:定期检查Fleet状态,确保应用部署成功
5.2 Rancher数据库Fleet问题排查
Rancher数据库Fleet问题排查:
# 问题1:Bundle部署失败
# 现象:Bundle部署时提示错误
# 原因:配置错误、资源不足、依赖问题
# 解决:
[root@rancher ~]# kubectl get bundles.fleet.cattle.io -n fleet-system
[root@rancher ~]# kubectl describe bundle fgedu-nginx-bundle -n fleet-system
[root@rancher ~]# kubectl get appdeployments.fleet.cattle.io -n fleet-system
[root@rancher ~]# kubectl logs -n fleet-system fleet-controller-1234567890-abcde
# 问题2:Git仓库同步失败
# 现象:Git仓库无法同步
# 原因:网络不通、认证失败、仓库地址错误
# 解决:
[root@rancher ~]# kubectl get gitrepos.fleet.cattle.io -n fleet-system
[root@rancher ~]# kubectl describe gitrepo fgedu-fleet-repo -n fleet-system
[root@rancher ~]# kubectl get secret git-credentials -n fleet-system
[root@rancher ~]# ping git.fgedu.net.cn
# 问题3:集群注册失败
# 现象:集群无法注册到Fleet
# 原因:网络不通、配置错误、版本不兼容
# 解决:
[root@rancher ~]# kubectl get clusters.fleet.cattle.io
[root@rancher ~]# kubectl describe cluster fgedu-eks
[root@rancher ~]# kubectl get pods -n fleet-system
[root@rancher ~]# kubectl logs -n fleet-system fleet-agent-1234567890-abcde
# 问题4:应用升级失败
# 现象:应用升级时提示错误
# 原因:配置冲突、版本不兼容、依赖问题
# 解决:
[root@rancher ~]# kubectl get bundles.fleet.cattle.io -n fleet-system
[root@rancher ~]# kubectl describe bundle fgedu-nginx-bundle -n fleet-system
[root@rancher ~]# kubectl get appdeployments.fleet.cattle.io -n fleet-system
[root@rancher ~]# kubectl logs -n fleet-system fleet-controller-1234567890-abcde
5.3 Rancher数据库Fleet维护
Rancher数据库Fleet维护:
# 1. 定期检查
– 检查Git仓库状态
– 检查Bundle状态
– 检查AppDeployment状态
– 检查集群状态
# 2. 定期更新
– 更新Bundle版本
– 更新应用配置
– 更新Fleet版本
– 更新Git仓库
# 3. 定期备份
– 备份Git仓库
– 备份Bundle配置
– 备份应用数据
– 备份Fleet配置
# 4. 定期清理
– 清理无用Bundle
– 清理无用Git分支
– 清理无用应用
– 清理过期日志
# 5. 定期审计
– 审计Bundle配置
– 审计应用配置
– 审计操作日志
– 审计资源使用情况
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
