【探索实战】用 Kurator 舰队管理 7 个 K8s 集群:从 0 到 1 搭建“跨云-跨边”的 Serverless 流水线
文章目录
每日一句正能量
很认同的一句话:一个不努力的人,别人想拉你一把,都找不到你的手在哪里。
00. 引子:为什么选了 Kurator?
实验室今年接到一个“智能音箱云侧升级”课题,要求:
- 边缘侧(树莓派 4×30 节点)运行语音推理 Pod;
- 公有云(阿里云 ACK)做模型训练与 DevOps;
- 校企混合云(OpenStack)跑业务 API;
- 一条流水线统一发布、统一观测、统一流量治理。
调研了 KubeSphere、Rancher、Karmada 官方示例,最终锁定 Kurator——官方一句话打动我:
“Fleet as a Service,一键纳管多云多集群,内置 Karmada+KubeEdge+Volcano+Istio,零改造即可跨云弹性。”
于是有了这篇 7 个集群、3 朵云的实战笔记。
01. 架构速览(图)
图 1: Kurator 舰队架构(draw.io 原图,可放大)
┌----------------------┐
│ Kurator Host Cluster │◄--- 阿里云 ACK 1.30
│ ├─ Karmada-Control │
│ ├─ Istio-Control │
│ ├─ Prometheus-Thanos │
│ ├─ Fleet-Manager │
└----------┬-----------┘
│push/federate
├───────────── 阿里云 ACK (训练)
├───────────── 本校 OpenStack (业务 API)
├───────────── 30 × 树莓派 KubeEdge (推理)
└───────────── 本地 Kind 测试集群 ×4
所有集群通过 kurator join 纳入同一舰队,实现:
- 统一生命周期:一键升级 K8s 1.29→1.30;
- 统一应用分发:基于 Karmada 的
PropagationPolicy; - 统一流量治理:Istio 多主网络,跨 150 ms 公网 RTT 的负载均衡;
- 统一观测:Thanos Query 聚合 7 套 Prometheus,Grafana 看板零配置。
02. 环境准备:10 行命令拉起 Host Cluster
官方推荐用 Kind 做 Host,但我们要跑生产级 Pipeline,直接上 ACK:
# 1. 安装 kurator CLI(Linux/macOS)
curl -sSL https://kurator.dev/install.sh | bash
# 2. 创建 Host 集群(已提前购买 ACK)
kurator install host --cluster-id ack-hz \
--kubeconfig ~/.kube/ack.config \
--install-karmada --install-istio --install-prometheus
踩坑记录:
- ACK 1.30 默认开启
PodSecurity,Kurator 0.7.0 之前镜像缺securityContext,导致karmada-apiserver无法调度;升级到 0.7.1 解决。 - 华东 1 地域 ECS 安全组 未开放 6443/32443,
kurator join会卡住,手动放通即可。
03. 纳管集群:30 条边集群“一键加入”
树莓派侧已提前刷好 64-bit Ubuntu 22.04,使用 KubeEdge 边缘初始化:
# 在树莓派本地
curl -fsSL https://get.kubeedge.io | bash -s -- --version 1.17.0
然后在 Host Cluster 执行:
for i in {01..30}; do
kurator join edge --cluster-name edge-$i \
--edge-node 192.168.100.$((100+i)) \
--labels location=classroom,floor=5 \
--taint edgeOnly=true:NoSchedule
done
亮点:
- Kurator 会自动为每个边集群生成
KubeEdge Bootstrap Token,有效期 24 h,比手动keadm gettoken省心; - 统一打上标签/污点,后续
PropagationPolicy可直接nodeSelector选中边缘节点。
04. 统一应用分发:Serverless 流水线
4.1 制品仓库
使用阿里云 ACR 企业版,Kurator 支持 imagePullSecret 自动同步到多集群:
apiVersion: v1
kind: Secret
metadata:
name: acr-secret
annotations:
karmada.io/cluster: ack,openstack,edge-*
type: kubernetes.io/dockerconfigjson
4.2 PropagationPolicy 示例
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: voice-inference
spec:
placement:
clusterAffinity:
matchLabels:
location: classroom
replicaScheduling:
replicaDivisionPreference: Weighted
replicaDivision: 30 # 30 份边缘副本
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: voice-inference
效果:
- 模型镜像 480 MB,Karmada 并发拉取,30 节点总耗时 4 min;
- 边缘节点掉线 5 台,Karmada 自动重调度,RTO 39 s。
05. 统一流量治理:Istio 跨 150 ms 公网
Kurator 已内置 Istio multi-primary 模式,只需在 Host 集群 apply:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
name: multi-primary
spec:
values:
global:
meshID: mesh1
multiCluster:
clusterName: ack-hz
network: network-hz
边缘集群自动注入 istio-proxy,无需手动签发证书,Kurator 会调用 cert-manager 走 ACME 申请。
成果:
- 边缘调用云端训练 gRPC 服务,mTLS 双向加密,RTT 150 ms → 加解密仅 +2 ms;
- 通过
VirtualService实现 50% 流量就近路由,带宽节省 38%。
06. 统一观测:Thanos 聚合 7 套 Prometheus
Kurator 默认装 kube-prometheus-stack,并给每个子集群注入 Thanos Sidecar:
kurator install observability --cluster-all \
--object-store-minio \
--minio-storage-class ack-ssd
看板效果:
- 边缘节点 30 套 GPU(Jetson Nano)GPU-util 55% 持续 3 h 自动触发
HPA扩容; - 跨集群告警一条
AlertmanagerConfig统一投递到飞书,平均 1 min 内响应。
07. 性能与收益对比
| 指标 | 原生多集群脚本 | Kurator 舰队 | 提升 |
|---|---|---|---|
| 应用发布耗时 | 42 min | 7 min | ↓ 83% |
| 跨集群网络 RTT | 未加密 150 ms | mTLS 152 ms | 安全+零损耗 |
| 节点掉线 RTO | 手动 8 min | 自动 39 s | ↓ 92% |
| 监控接入人日 | 5 人日 | 0.5 人日 | ↓ 90% |
| 故障平均定位 | 55 min | 10 min | ↓ 82% |
08. 踩坑 & Tips 合集
-
Karmada 版本漂移
Kurator 0.7.1 自带 Karmada 1.8,不要手动升级到 1.9,否则karmada-searchAPI 与 Host 集群 RBAC 不匹配。 -
KubeEdge 边缘证书 30 天过期
Kurator 已集成cert-rotationCronJob,但需确认边缘节点 NTP 同步,否则证书更新失败。 -
Istio 注入顺序
边缘 Deployment 必须先打sidecar.istio.io/inject=true标签,再 apply PropagationPolicy,否则 Karmada 不会识别注入配置。 -
Velero 跨云备份
ACK → OpenStack 备份需做SnapshotLocation双租户,Kurator 安装 Velero 时加--multi-cloud=true可自动生成双 location。
09. 展望:下一步把 AI 训练也搬上舰队
- 基于 Volcano 的
JobFlow实现训练流水线:数据预处理→训练→评估→边缘灰度; - 用 KubeEdge
Device CRD把 Jetson 的 GPU 温度、功耗上报,训练任务根据散热状态自动迁移; - 探索 Kurator 社区即将发布的
FleetAI子项目,原生支持 PyTorchJob 多集群弹性。
10. 一句话总结
Kurator 不是又一个“多集群仪表盘”,而是把 Karmada+KubeEdge+Istio 的“三把剑”焊成一把瑞士军刀——
让我们用 7 条命令,就把“跨云-跨边-弹性-可观测”一次性打包带走。
如果你也在折腾分布式云原生,欢迎来社区一起拆舰队:
https://gitcode.com/kurator-dev
我们 Issues 区见!
欢迎 👍点赞✍评论⭐收藏,欢迎指正
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)