【探索实战】从零搭建Kurator分布式云原生平台:入门安装与核心功能实战体验

哈咯,大家早上好,今天我要跟大家来聊聊–Kurator,它作为一款开源的分布式云原生平台,能帮助我们轻松构建和管理多集群、多云环境,整合了那么多优秀的开源项目,简直是云原生开发者的福音!来,一起开启云原生之旅吧!

一、Kurator简介:分布式云原生的统一解决方案

Kurator是一个开源的分布式云原生平台,旨在帮助用户构建自己的分布式云原生基础设施,并助力企业数字化转型。它站在众多流行云原生项目的肩膀上,包括Kubernetes、Istio、Prometheus、FluxCD、KubeEdge、Volcano、Karmada和Kyverno等。这些集成让Kurator提供了强大的多云和多集群管理能力。

如下是Kurator的产品架构图,大家可以参考下:

具体来说,Kurator的核心优势在于提供统一的资源编排、统一的调度、统一的流量管理和统一的遥测能力。同时,它支持多云、边云协同、边边协同等场景,实现基础设施即代码(Infrastructure-as-Code),一键安装云原生软件栈,并基于Fleet(舰队)概念对集群组进行一致性管理。

Fleet是Kurator的关键概念,它代表一组集群的集合,用于一致性地管理这些集群。Fleet支持的功能包括:

  • 集群注册和注销
  • 应用自定义并同步到舰队中的集群
  • 跨集群的Namespace、ServiceAccount和服务一致性
  • 跨集群服务发现和通信
  • 从所有集群聚合指标
  • 提供策略引擎,确保所有集群具有一致的策略

这些能力让运维人员从繁琐的多集群管理中解放出来,实现“一栈统一”的愿景。官方文档强调,Kurator通过这些统一能力,极大简化了分布式环境的复杂性,尤其适合跨云、跨边场景下的业务升级。

在实战中,我将重点体验Kurator的安装搭建、集群生命周期管理(通过Cluster Operator)、统一应用分发(通过Fleet Manager的应用管理)、统一流量治理(通过Submariner和 rollout 支持)、统一监控(通过Prometheus和Thanos集成)以及统一策略管理(通过Kyverno)。这些都直接来源于官方文档和GitHub releases描述。

所以,在我们开启正式篇章之前,我们先来学习下如何克隆Kurator项目吧,如下附上如何获取Kurator项目详细步骤教程:

我们可直接下载zip压缩包:


直接点击下载:

可查看本地是否有被真正下载

接下来,我们只需要解压即可。

不然的话,进一步就会卡在项目获取这步呢。

二、Kurator分布式云原生环境搭建:从零到一的入门步骤

搭建Kurator环境是入门的第一步。官方文档将安装分为几个组件:Kurator CLI、Cluster Operator、Fleet Manager等。整个过程强调声明式管理和GitOps方式,适合本地kind集群测试或真实云环境。

前提条件

  • 需要一个管理集群(host cluster),推荐使用kind创建本地Kubernetes集群。
  • 安装kubectl、helm和FluxCD(Fleet Manager依赖FluxCD的Helm chart)。
  • 对于测试,准备多个kind集群作为member clusters。

步骤1:安装Kurator CLI
官方提供Kurator CLI用于简化操作。虽然具体命令在文档中以安装指南形式呈现,但核心是下载二进制或通过脚本安装。CLI用于生成和应用manifests。

步骤2:安装Cluster Operator
Cluster Operator是Kurator管理集群生命周期的核心组件。它支持在公共云、混合云和本地环境中管理Kubernetes集群的创建、删除、升级和扩缩容。

官方推荐的最简单方式是使用Kurator Cluster API部署集群。例如,在本地on-premise场景下:

首先,应用Cluster CRD和operator。

然后,创建一个KubernetesCluster资源(简称KCP)来定义集群。

示例YAML(来源于官方on-premise集群生命周期管理指南):

apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: cc-kcp
  namespace: default
spec:
  topology:
    class: quick-start
    version: v1.26.5  # 指定Kubernetes版本
    controlPlaneReplicaCount: 1
    workers:
      machineDeployments:
      - class: quick-start-worker
        name: md-0
        replicas: 1

应用后,Cluster Operator会自动provision集群。查看状态:

kubectl get cluster
kubectl get po -A  # 查看节点Pod,如cilium、coredns、kube-apiserver等

示例输出(官方展示):

NAMESPACE     NAME                      READY   STATUS    RESTARTS   AGE
kube-system   cilium-6sjhd              1/1     Running   0          13m
kube-system   cilium-operator-...       1/1     Running   0          13m
kube-system   coredns-...               1/1     Running   0          8m22s
kube-system   kube-apiserver-master1    1/1     Running   1          15m
...

升级集群示例
编辑KCP资源,将version改为目标版本,如v1.27.0,然后应用滚动更新策略:

spec:
  kubeadmConfigSpec:
    format: cloud-config
  machineTemplate:
    infrastructureRef:
      apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
      kind: customMachine
      name: cc-custommachine
      namespace: default
  replicas: 1
  rolloutStrategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
  version: v1.27.0  # 升级版本

这实现了集群的无缝升级。

集群本身成为 Kurator 能管理的基础资源

步骤3:安装Fleet Manager
Fleet Manager依赖Cluster Operator和FluxCD。

首先,安装FluxCD Helm chart,然后应用Fleet Manager manifests到管理集群。

官方指南:将Fleet Manager安装到host cluster中。

步骤4:注册集群到Fleet
使用AttachedCluster资源定义外部集群(任何工具provision的集群)。

示例(来源于统一应用分发文档):

应用AttachedCluster和Fleet:

kubectl apply -f examples/attachedcluster.yaml  # 假设官方examples

然后检查member集群状态。

安装过程中的小问题及解决办法

  1. 依赖缺失:如果FluxCD未安装,会报错。解决:手动helm install FluxCD community chart。
  2. Kubeconfig路径错误:注册AttachedCluster时,需要正确指定member集群的kubeconfig路径。解决:export KUBECONFIG=/path/to/member.config,并验证kubectl get nodes。
  3. 版本兼容:Cluster Operator支持特定Kubernetes版本,如果不匹配,升级失败。解决:检查CRD版本,参考官方releases(如v0.4.0引入AttachedCluster)。
  4. 网络问题:在kind环境中,Submariner插件可能需要额外PSK。解决:生成随机PSK并envsubst应用YAML。
  5. 资源不足:本地kind集群节点少时,Pod调度失败。解决:增加kind节点或调整replicas。

通过这些步骤,我成功搭建了一个包含host集群和两个member集群的分布式环境。整个过程不到1小时,相比手动配置Karmada + KubeEdge等,Kurator的一键式集成大大降低了门槛!🌟

当然,如果你对上述步骤有所疑惑,我们可参考官方文档,它提供了详细的步骤信息:

三、功能使用体验:统一集群生命周期治理

Cluster Operator提供了云原生方式管理集群全生命周期。

使用体验

  • 创建:声明式应用Cluster资源,自动provision节点、安装CNI(如Cilium)、CoreDNS等。
  • 升级:编辑version字段,RollingUpdate策略确保零宕机。
  • 扩缩容:修改replicas,自动添加/移除节点。
  • 删除:删除Cluster CR,operator清理资源。

对云原生平台运维的作用分析
传统多集群管理需要分别登录每个集群执行kubeadm upgrade等操作,容易出错且不一致。Kurator的Cluster Operator实现统一生命周期治理,让运维从声明式API单点控制所有集群。这提升了可靠性,减少了人为错误,尤其在分布式场景下,支持公共云和on-premise混合,助力企业跨环境平滑迁移。专业角度看,这符合Cluster API标准,扩展性强,可集成各种基础设施提供者。

四、功能使用体验:统一应用分发

Kurator v0.4.0引入Application Manager,基于FluxCD和Fleet,实现GitOps方式的应用分发。

使用示例(来源于官方统一应用分发文档):

定义Application资源:

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

应用后,podinfo应用会同步到fleet中所有集群。

选择性分发:为集群打标签,如env=dev,然后在policy中指定selector:

spec:
  syncPolicies:
    - destination:
        fleet: quickstart
        clusterSelector:
          matchLabels:
            env: dev

体验:应用成功后,检查member集群:

kubectl get po -n webapp --kubeconfig=/path/to/member.config

看到podinfo和webapp Pod运行。

高级:渐进式发布(Blue/Green示例,来源于官方Nginx Blue/Green指南):

apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
  name: blue-green-nginx-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: 0s
        path: ./deploy/webapp
        prune: true
        timeout: 2m0s
      rollout:
        testLoader: true
        trafficRoutingProvider: nginx
        workload:
          apiVersion: apps/v1
          kind: Deployment
          name: backend
          namespace: webapp
          serviceName: backend
          port: 9898
        rolloutPolicy:
          trafficRouting:
            analysisTimes: 3
            timeoutSeconds: 60
            host: "example.com"  # 替换实际host

Kurator会自动安装Nginx和Prometheus,支持Canary、A/B Testing和Blue/Green。

作用分析:统一应用分发让多集群部署从“多点操作”变为“单点声明”,支持自定义策略和渐进发布,极大降低了发布风险。在分布式平台运维中,这意味着更快迭代、更一致的环境,商业上可加速业务上线,减少运维成本。

如下为Kurator社区的官方文档,详细步骤流程:

五、功能使用体验:统一流量治理

通过Submariner插件和rollout支持,实现跨集群流量管理。

启用Submariner(来源于官方指南):

生成PSK:

export SUBMARINER_PSK=$(LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 64 | head -n 1)
envsubst < examples/fleet/network/submariner-plugin.yaml | kubectl apply -f -

这在fleet集群间启用服务网格和跨集群通信。

结合Istio集成,实现统一流量管理。

作用分析:分布式环境中,服务发现和东-西/南-北流量一致性是痛点。Kurator的Submariner + Nginx/Flagger支持,让流量治理统一,专业上提升了微服务可靠性,支持多集群服务网格,适合边云协同场景。

如下为Kurator社区的官方文档,详细步骤流程:

六、功能使用体验:统一监控

Kurator集成Prometheus和Thanos,实现指标聚合。

官方支持从fleet所有集群聚合metrics到中央Prometheus。

作用分析:传统多集群监控需要多个Prometheus实例,查询复杂。统一遥测让运维单点查看所有指标,结合Grafana,快速故障定位,提升观测性。

如下为官方文档说明:

七、功能使用体验:统一策略管理

基于Kyverno,在fleet中同步策略。

示例:应用Kyverno policies到Application,然后同步。

架构:Fleet多集群策略管理构建于Kyverno之上。

作用分析:确保所有集群一致的安全和合规策略,减少配置漂移,专业上强化治理。

不清楚的可直接查阅官方文档。

八、案例实战总结与个人感悟

在本次实战中,我从本地kind环境搭建了包含3个集群的fleet,体验了全流程:集群创建、应用分发(包括Blue/Green)、流量连通和策略同步。整个过程逻辑清晰,声明式API让操作可审计、可回滚。

对云原生平台运维的作用:Kurator将分散的管理统一起来,降低了复杂性,提升了效率和可靠性。生态价值在于整合主流项目,避免重复造轮子,助力企业跨云分布式升级。

未来,期待更多插件如备份迁移(v0.4.0已引入)。

附上Kurator官方资料:

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

更多推荐