在这里插入图片描述

每日一句正能量

很认同的一句话:一个不努力的人,别人想拉你一把,都找不到你的手在哪里。


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/32443kurator 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 合集

  1. Karmada 版本漂移
    Kurator 0.7.1 自带 Karmada 1.8,不要手动升级到 1.9,否则 karmada-search API 与 Host 集群 RBAC 不匹配。

  2. KubeEdge 边缘证书 30 天过期
    Kurator 已集成 cert-rotation CronJob,但需确认边缘节点 NTP 同步,否则证书更新失败。

  3. Istio 注入顺序
    边缘 Deployment 必须先打 sidecar.istio.io/inject=true 标签,再 apply PropagationPolicy,否则 Karmada 不会识别注入配置。

  4. 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 区见!

欢迎 👍点赞✍评论⭐收藏,欢迎指正

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐