前言

哇哦!今天我又来一篇Kurator实战分享,太兴奋了!Kurator这个开源平台真的太强大了,它整合了那么多优秀项目,让分布式管理变得简单高效。这次我们换个角度,从本地kind环境快速搭建入手,逐步深入到多集群注册、统一应用分发、渐进式发布、跨集群网络连通、策略统一以及监控聚合的全流程实践。整个过程基于官方文档的本地测试指南和示例,确保每一步都可复现。来,一起动手玩转Kurator吧!

一、Kurator平台概述:构建分布式云原生的统一开源解决方案

Kurator是一个开源的分布式云原生平台,旨在帮助用户构建自己的分布式云原生基础设施,并助力企业数字化转型。它整合了众多流行云原生软件栈,包括Kubernetes、Istio、Prometheus、FluxCD、KubeEdge、Volcano、Karmada和Kyverno等。这些集成提供了强大的多云和多集群管理能力,支持多云、边云协同、边边协同等场景。

Kurator的核心目标是通过统一资源编排、统一调度、统一流量管理和统一遥测,实现“一栈统一”的管理愿景。关键组件包括:

  • Cluster Operator:负责集群生命周期管理,支持声明式创建、升级、扩缩容和删除。
  • Fleet Manager:基于Fleet概念,对集群组进行一致性管理,包括应用同步、Namespace/Service一致性、跨集群服务发现、指标聚合和策略引擎。
  • Kurator CLI:简化操作的命令行工具。

官方文档强调,Kurator通过Infrastructure-as-Code方式,一键安装云原生软件栈,并为舰队(Fleet)中的集群提供统一治理。这极大降低了分布式环境的复杂性,尤其适合需要跨云跨边协同的企业场景。👍

本次实践将聚焦本地环境,使用kind创建host集群和member集群,体验Fleet Manager的统一能力,包括应用分发、流量治理、网络插件、策略管理和遥测。

如果你们感兴趣,可直接下载该源码:


下载到本地之后


我们只需要进行项目解压即可:

可以看到清晰的目录结构,剩下的就看大家想怎么玩了。

而且附带很多文档说明,绝绝子。


源码下载完毕后,接下来,我们便可以直接实战教学了。

二、本地分布式环境搭建:快速准备host与member集群

官方推荐使用kind进行本地测试,便于快速验证Kurator功能。前提是安装kind、kubectl和helm。

步骤1:创建host集群(管理集群)

kind create cluster --name kurator-host

步骤2:创建member集群

kind create cluster --name kurator-member1
kind create cluster --name kurator-member2

导出member集群的kubeconfig:

kind export kubeconfig --name kurator-member1 --kubeconfig ~/.kube/kurator-member1.config
kind export kubeconfig --name kurator-member2 --kubeconfig ~/.kube/kurator-member2.config

步骤3:安装Fleet Manager依赖
Fleet Manager依赖FluxCD和Cluster Operator。首先在host集群安装FluxCD(如果需要),然后安装Fleet Manager Helm chart(参考官方releases,如v0.6.0)。

步骤4:注册member集群到Fleet
创建AttachedCluster资源,将member集群加入Fleet。

首先创建secret:

kubectl create secret generic kurator-member1 --from-file=kurator-member1.config=~/.kube/kurator-member1.config -n default
kubectl create secret generic kurator-member2 --from-file=kurator-member2.config=~/.kube/kurator-member2.config -n default

然后应用AttachedCluster和Fleet:

kubectl apply -f examples/application/common/  # 官方示例,包括AttachedCluster和quickstart Fleet

检查Fleet状态:

kubectl get fleet quickstart
kubectl wait fleet quickstart --for='jsonpath={.status.phase}'=Ready

常见问题解决

  • Secret路径错误:确保kubeconfig文件路径正确,验证kubectl --kubeconfig=路径 get nodes。
  • Fleet未Ready:检查Pod日志,可能是网络或权限问题,重启host集群或重新应用manifests。
  • kind网络隔离:本地kind集群间默认不连通,后续通过Submariner插件解决。

通过这些步骤,一个包含host和两个member集群的分布式环境就搭建完成了。整个过程高效快捷,体现了Kurator的“开箱即用”优势!😄

当然,理论+实战,我们还可以参考如下流程图:

三、统一应用分发实践:GitOps方式的多集群同步部署

Kurator的Application Manager基于FluxCD,实现GitOps统一应用分发。官方提供了多种源类型:GitRepository、HelmRepository和Git+Helm。

基本示例:从Git仓库分发Kustomization应用
应用官方gitrepo-kustomization-demo:

apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
  name: gitrepo-kustomization-demo
  namespace: default
spec:
  source:
    gitRepository:
      interval: 3m0s
      ref:
        branch: master
      timeout: 1m0s
      url: https://github.com/stefanprodan/podinfo
  syncPolicies:
    - destination:
        fleet: quickstart
      kustomization:
        interval: 5m0s
        path: ./deploy/webapp
        prune: true
        timeout: 2m0s
    - destination:
        fleet: quickstart
      kustomization:
        targetNamespace: default
        interval: 5m0s
        path: ./kustomize
        prune: true
        timeout: 2m0s

应用命令:

kubectl apply -f examples/application/gitrepo-kustomization-demo.yaml

验证:

kubectl get po -A --kubeconfig=~/.kube/kurator-member1.config
kubectl get po -A --kubeconfig=~/.kube/kurator-member2.config

看到podinfo相关Pod在两个member集群中同步部署。

Helm源示例
类似地,使用helmrepo-helmrelease-demo,支持values覆盖和remediation retries。

选择性分发
为集群打标签:

kubectl label attachedcluster kurator-member1 env=test
kubectl label attachedcluster kurator-member2 env=dev

然后在syncPolicies中添加clusterSelector:

syncPolicies:
  - destination:
      fleet: quickstart
      clusterSelector:
        matchLabels:
          env: dev
    kustomization: ...

这样应用只分发到匹配的集群。

在host集群直接部署
不指定destination.fleet,直接在host应用。

体验分析
统一应用分发将多集群部署从手动操作转为声明式GitOps,prune=true确保清理旧资源。间隔同步支持自动漂移修复。在运维中,这意味着一致性更高、审计更易,极大提升了分布式平台的部署效率和可靠性。

讲到这里,如果这里你已经感兴趣了,你可以直接去克隆代码或者下载:

四、渐进式流量治理实践:Blue/Green部署与自动化发布

Kurator支持Flagger插件,实现Canary、A/B和Blue/Green发布。官方Nginx Blue/Green示例展示了完整流程。

完整Application YAML(官方blue-green-nginx-demo):
包含source、syncPolicies、workload定义(Deployment backend)、rolloutPolicy(trafficRouting with nginx、analysisTimes、metrics查询Prometheus、webhooks生成负载)。

关键配置:

  • trafficRoutingProvider: nginx(自动安装Ingress)
  • metrics: 自定义Prometheus查询请求成功率 >99%
  • webhooks: 使用hey生成测试流量

应用后:

kubectl get canary -n webapp

状态从Initialized → Progressing → Promoting → Succeeded。

如果指标失败,自动回滚到Blue版本。

作用分析
传统发布风险高,分布式环境下更复杂。Kurator的渐进发布结合Nginx和Prometheus,实现自动化验证和流量切换,确保零宕机。在专业运维视角,这提升了发布安全性,支持金丝雀测试,适合高可用微服务场景。

可看下如下分发示意图,以便于理解:

五、跨集群网络连通实践:Submariner插件启用

分布式流量治理需要集群间网络连通,Kurator通过Submariner插件实现。

步骤

  1. 为每个member集群打gateway标签:
kubectl label node kurator-member1-control-plane submariner.io/gateway=true --kubeconfig=~/.kube/kurator-member1.config
# 同member2
  1. 生成PSK:
export SUBMARINER_PSK=$(LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 64 | head -n 1)
  1. 应用插件:
envsubst < examples/fleet/network/submariner-plugin.yaml | kubectl apply -f -

验证:

kubectl get pod -n submariner-operator --kubeconfig=~/.kube/kurator-member1.config

体验
启用后,fleet中集群实现服务发现和东-西流量连通,结合Istio可构建多集群服务网格。

作用分析
跨集群通信是分布式痛点,Submariner插件统一管理,避免手动配置broker。专业上,这支持边云协同,提升了服务可用性和扩展性。

如果你对其部署过程有疑问,可进行其官网文档进行求解。

六、统一策略管理实践:Kyverno多集群同步

基于Kyverno,实现舰队策略一致性。

启用
应用kyverno.yaml示例:

kubectl apply -f examples/fleet/policy/kyverno.yaml

测试违规Pod:
通过Application分发badpod-demo,检查policyreport显示FAIL。

作用分析
确保所有集群一致的安全基线(如禁止host namespace),防止配置漂移。在运维中,这强化了治理和合规,减少安全风险。

如下是它的架构图:

七、统一遥测与监控实践:指标聚合

Kurator支持Thanos集成,从fleet聚合Prometheus指标到中央存储。

官方整合指南强调统一遥测,让运维单点查询所有集群指标。

作用分析
多集群监控碎片化问题解决,结合Grafana实现全局观测,提升故障诊断效率。

八、整体实战总结与运维价值思考

本次从本地kind环境搭建,到Fleet注册、应用分发(包括选择性和Helm)、Blue/Green发布、Submariner网络、Kyverno策略和遥测聚合,全流程实践了Kurator的统一能力。相比单独使用Karmada或KubeEdge,Kurator的封装让操作更声明式、更一致。

对云原生平台运维的作用:极大简化了分布式复杂性,实现单点控制多集群,提升效率、可靠性和安全性。生态价值在于无缝整合主流项目,助力企业跨云升级和AI创新。

个人感悟:Kurator真正实现了“告别繁琐,一栈统一”,适合从入门到生产的全阶段。期待未来更多插件扩展!🌈

最后,附上Kurator 开源地址:

  • Kurator分布式云原生开源社区地址:https://gitcode.com/kurator-dev
  • Kurator分布式云原生项目部署指南:https://kurator.dev/docs/setup/
Logo

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

更多推荐