
rancher/fleetRancher Fleet Controller是Rancher生态系统中的核心GitOps组件,专为跨多Kubernetes集群的应用部署与生命周期管理设计。作为声明式配置控制器,它通过监控Git仓库中的应用定义,自动同步配置至目标Kubernetes集群,实现"以Git为单一真实来源"的应用管理模式,简化大规模集群环境下的部署复杂度。
适用于拥有数十至数百Kubernetes集群的企业,通过统一Git仓库管理所有集群的应用配置,避免"集群孤岛"问题。
作为CI/CD流程的最终部署环节,接收CI构建产物(如容器镜像、Helm Chart),自动同步至目标集群,实现完整DevOps闭环。
为微服务架构或分布式应用提供标准化部署模板,确保所有集群使用一致的配置基线,降低配置漂移风险。
在边缘计算环境中,通过低带宽优化的同步机制,管理边缘节点上的轻量化应用,支持断网重连后自动恢复同步。
Fleet Controller通常通过Helm Chart部署至Kubernetes集群:
bash# 添加Rancher Fleet Helm仓库 helm repo add rancher-fleet [***] helm repo update # 创建命名空间 kubectl create namespace fleet-system # 部署Fleet Controller(默认包含CRD、RBAC配置) helm install fleet-controller rancher-fleet/fleet-controller \ --namespace fleet-system \ --set replicaCount=2 \ # 生产环境建议2-3副本 --set logLevel=info \ # 日志级别:debug/info/warn/error --set gitPollInterval=30s # Git仓库轮询间隔
通过Helm values.yaml或环境变量调整控制器行为,关键参数说明:
| 参数名 | 环境变量对应 | 描述 | 默认值 |
|---|---|---|---|
replicaCount | - | 控制器副本数,用于高可用部署 | 1 |
logLevel | FLEET_LOG_LEVEL | 日志输出级别 | info |
gitPollInterval | FLEET_GIT_POLL_INTERVAL | Git仓库变更检查间隔(格式:30s、5m) | 30s |
agentPollInterval | FLEET_AGENT_POLL_INTERVAL | 与Fleet Agent的通信间隔 | 10s |
maxConcurrentReconciles | FLEET_MAX_CONCURRENT_RECONCILES | 并发同步任务数,调整以适应集群规模 | 10 |
metrics.enabled | - | 是否暴露Prometheus指标 | true |
metrics.service.port | - | 指标暴露端口 | 9090 |
在控制器所在集群创建GitRepo自定义资源,定义Git仓库信息:
yamlapiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: backend-services namespace: fleet-default # Fleet默认工作命名空间 spec: # Git仓库地址(支持HTTPS/SSH) repo: [***] # 分支或标签(支持branch:main、tag:v1.0.0、commit:abc123) branch: main # 同步路径(仅同步仓库中指定目录) paths: - ./overlays/production # 目标集群选择器(按标签筛选集群) targets: - name: prod-clusters clusterSelector: matchLabels: environment: production # 同步策略(如失败重试次数、超时时间) syncOptions: retryLimit: 5 timeout: 5m
通过kubectl查看GitRepo同步状态:
bash# 查看GitRepo资源 kubectl get gitrepo -n fleet-default # 查看详细同步状态 kubectl describe gitrepo backend-services -n fleet-default
如需修改同步策略(如调整轮询间隔),可通过Helm升级控制器配置:
bashhelm upgrade fleet-controller rancher-fleet/fleet-controller \ --namespace fleet-system \ --set gitPollInterval=1m # 调整为1分钟轮询一次
除Helm参数外,可通过环境变量直接配置控制器(适用于非Helm部署场景):
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
FLEET_NAMESPACE | 控制器工作命名空间 | fleet-system |
FLEET_CLUSTER_NAME | 控制器所在集群名称 | local |
FLEET_GIT_TLS_VERIFY | 是否验证Git仓库TLS证书 | true |
FLEET_AGENT_IMAGE | Fleet Agent镜像地址 | rancher/fleet-agent |
FLEET_CONTROLLER_IMAGE | 控制器自身镜像地址 | rancher/fleet-controller |
kubectl logs -n fleet-system -l app=fleet-controller -f/healthz端点(默认端口8080),可配置Kubernetes liveness/readiness探针http://<pod-ip>:9090/metrics,关键指标包括:
fleet_git_sync_total:Git仓库同步总次数fleet_cluster_sync_duration_seconds:集群同步耗时fleet_resource_reconcile_errors:资源同步错误数maxConcurrentReconciles参数,避免API Server过载

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务