👨🎓博主简介
💊交流社区: 运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 一、Kurator是什么?
-
- [1.1 诞生背景](#1.1 诞生背景)
- [1.2 顶层抽象](#1.2 顶层抽象)
- [二、Kurator 和 Kubernetes 的关系](#二、Kurator 和 Kubernetes 的关系)
-
- [2.1 不是替代,而是"叠加"](#2.1 不是替代,而是“叠加”)
- [2.2 版本对应表](#2.2 版本对应表)
- [2.3 部署拓扑](#2.3 部署拓扑)
- [三、Kurator 部署](#三、Kurator 部署)
-
- [3.1 环境前置检查](#3.1 环境前置检查)
- [3.2 下载安装 Kurator CLI](#3.2 下载安装 Kurator CLI)
- [3.3 下载安装 cert-manager](#3.3 下载安装 cert-manager)
- [3.4 下载安装 helm](#3.4 下载安装 helm)
-
- [3.4.1 启用命令补全](#3.4.1 启用命令补全)
- [3.4.2 仓库管理(Chart 来源配置)](#3.4.2 仓库管理(Chart 来源配置))
- [3.5 使用 Helm 安装 cluster-operator](#3.5 使用 Helm 安装 cluster-operator)
- [3.6 使用 Helm 安装 FluxCD](#3.6 使用 Helm 安装 FluxCD)
- [3.7 使用 Helm 安装 Minio](#3.7 使用 Helm 安装 Minio)
- 四、小结与展望
一、Kurator是什么?
1.1 诞生背景
2022 年华为云将内部"分布式云原生基础设施"能力开源,取名 Kurator(Kubernetes + Curator)。它要解决的核心痛点是:
- 企业手里有多朵云、多种边缘、多套 K8s,但缺乏"一朵控制面"统一生命周期、应用、流量、观测、策略。
- 传统多云方案(KubeFed、KubeSphere、Rancher)要么只聚焦"多集群应用",要么需要重量级商业组件,而 Kurator 选择"100 % 社区开源 + 纯云原生技术栈",用 Cluster API + GitOps + Istio + Prometheus 等组合出"舰队级"治理能力。
1.2 顶层抽象
Kurator 把"集群"降维成一条 CR:Cluster.kurator.dev;把"跨集群资源"抽象成 Fleet.kurator.dev。
用户只需要声明"我要 3 个 1.26 集群、5 副本 nginx、跨集群金丝雀",Kurator 控制器就会:
- 调用 Cluster API 在 AWS/VMware/裸机创建/升级/删除集群;
- 通过 FluxCD 把 Git 仓库渲染成多集群 HelmRelease;
- 通过 Istio east-west gateway 做跨集群负载均衡;
- 通过 Prometheus+Thanos 侧车把指标汇聚到中心 Bucket;
- 通过 Kyverno 做跨集群策略审计。
一句话总结:
Kurator是"以 K8s 方式管理 K8s 舰队"的 K8s 原生操作系统。
二、Kurator 和 Kubernetes 的关系
2.1 不是替代,而是"叠加"
Kurator 不会替换
kube-apiserver、kubelet等任何原生组件,它只做三件事:
- 把"集群"当做自定义资源管理(Cluster API 范式);
- 把"跨集群交付"当做 GitOps 管道(FluxCD 范式);
- 把"跨集群观测/策略"当做联邦式数据面(Prometheus/Kyverno 范式)。
2.2 版本对应表
| Kurator 版本 | 管理集群 K8s | 被管集群 K8s | 备注 |
|---|---|---|---|
| v0.6.x | 1.24--1.29 | 1.20--1.29 | 官方 CI 用 1.29[^54] |
| v0.5.x | 1.22--1.27 | 1.20--1.27 | 边缘场景大量采用 |
| v0.4.x | 1.20--1.25 | 1.20--1.25 | 已停止维护 |
⚠️ 注意:管理集群版本必须 ≥ 工作集群版本 --2 个小版本,否则 CRD 字段兼容会报错。
2.3 部署拓扑
"管理集群"可以复用业务集群,也可以单独再起一套。生产建议独立,原因:
- Kurator 控制器需要 list-watch 大量集群,对 etcd 压力敏感;
- 升级 Kurator 不会影响到业务集群的 kube-system;
- 网络隔离(Kurator 需要 SSH/6443 直通被管节点)。
本文为了节省机器,直接把 Kurator 装在同一套 1.20.10 集群上,同时演示"自纳管"场景。
三、Kurator 部署
基于kubernetes 1.20.10版本二进制部署
3.1 环境前置检查
| 节点 | 操作系统 | CPU | 内存 | 磁盘 | 角色 |
|---|---|---|---|---|---|
| k8s-master | CentOS 7.9 | 8C | 16G | 100G | kube-apiserver + Kurator 控制面 |
| k8s-node1 | CentOS 7.9 | 8C | 16G | 100G | worker + 被纳管 |
| k8s-node2 | CentOS 7.9 | 8C | 16G | 100G | worker + 被纳管 |
注意事项:
- 需提前关闭所有节点的
firewalld、selinux;
bash
# 禁止防火墙开机自启,关闭防火墙
systemctl disable firewalld && systemctl stop firewalld
# 永久关闭selinux
vim /etc/selinux/config
## 吧selinux=改为disabled
SELINUX=disabled

- 提前安装
kubernets、docker、cfssl;
二进制部署
kubernetes、docker和cfssl可参考:https://blog.csdn.net/liu_chen_yang/article/details/151709127
3.2 下载安装 Kurator CLI
bash
# 拉取kurator源码
wget https://github.com/kurator-dev/kurator/releases/download/v0.6.0/kurator-0.6.0-linux-amd64.tar.gz
## 下载不下来也可以通过加速等直接访问下载,并上传到服务器上
# 上传到服务器上解压
tar xf kurator-0.6.0-linux-amd64.tar.gz
# 将解压出来的命令移动到/usr/local/bin/目录
mv kurator /usr/local/bin/
# 验证安装
kurator version

3.3 下载安装 cert-manager
- 下载cert-manager
安装地址:https://github.com/cert-manager/cert-manager/releases
根据自己k8s集群版本找到对应版本下载,这里我是1.20.10版本,所以可以直接下载1.19.0版本;
bash
wget https://github.com/cert-manager/cert-manager/releases/download/v1.19.0/cert-manager.yaml
- 安装cert-manager
bash
# 下载好之后直接运行
kubectl apply -f cert-manager.yaml
# 验证(状态都为1/1即可)
kubectl get pods -n cert-manager

3.4 下载安装 helm
- 下载helm
访问地址:https://github.com/helm/helm/releases
根据k8s集群版本来下载对应的版本即可;我这里是1.20.1版本,可以下载helm的3.19.0版本;
bash
wget https://get.helm.sh/helm-v3.19.0-linux-amd64.tar.gz
- 安装helm
bash
# 解压下载的安装包
tar xf helm-v3.19.0-linux-amd64.tar.gz
# 将命令直接移动到/usr/local/bin/下可执行
mv linux-amd64/helm /usr/local/bin/
# 验证
helm version

3.4.1 启用命令补全
bash
source <(helm completion bash)
3.4.2 仓库管理(Chart 来源配置)
bash
# 1. 添加常用公开仓库
helm repo add bitnami https://charts.bitnami.com/bitnami # 常用应用仓库
helm repo add stable http://mirror.azure.cn/kubernetes/charts # 稳定版仓库
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts # 阿里云仓库
helm repo add incubator https://charts.helm.sh/incubator # 孵化版仓库
# 2. 更新仓库索引(获取最新 Chart 列表)
helm repo update
# 3. 查看已添加仓库
helm repo list
# 4. 搜索仓库中的 Chart(如搜索 stable 仓库的 Chart)
helm search repo stable
# 5. 删除无用仓库(如删除 incubator)
helm repo remove incubator
3.5 使用 Helm 安装 cluster-operator
- 下载cluster-operator集群操作员
bash
curl -LO https://github.com/kurator-dev/kurator/releases/download/v0.6.0/cluster-operator-0.6.0.tgz
- 安装集群操作员到管理集群中
bash
# 安装
helm install --create-namespace kurator-cluster-operator cluster-operator-0.6.0.tgz -n kurator-system
# 查看pod(状态为1/1即成功)
kubectl get pod -l app.kubernetes.io/name=kurator-cluster-operator -n kurator-system
如图,代表安装成功;

如果需要清理,可使用命令进行清理:
helm uninstall kurator-cluster-operator -n kurator-system
3.6 使用 Helm 安装 FluxCD
舰队管理器依赖于Fluxcd,Kurator 使用来自 Fluxcd 社区的 Helm Chart,更多详情可以找到。
bash
helm repo add fluxcd-community https://fluxcd-community.github.io/helm-charts
cat <<EOF | helm install fluxcd fluxcd-community/flux2 --version 2.7.0 -n fluxcd-system --create-namespace -f -
imageAutomationController:
create: false
imageReflectionController:
create: false
notificationController:
create: false
EOF
执行回车之后会卡到这块,那是因为在进行下载解包等操作

- 验证
所有pod的状态都为
1/1则正常,如果不是可使用命令查看卡到哪了:kubectl describe pods -n fluxcd-system pod名称
bash
kubectl get pods -n fluxcd-system

3.7 使用 Helm 安装 Minio
bash
cat <<EOF | helm install minio oci://registry-1.docker.io/bitnamicharts/minio -n monitoring --create-namespace -f -
auth:
rootPassword: minio123
rootUser: minio
defaultBuckets: thanos,velero
accessKey:
password: minio
secretKey:
password: minio123
service:
type: LoadBalancer
EOF
执行回车之后会卡到这块,那是因为在进行下载解包等操作
- 验证
所有pod的状态都为
1/1则正常,如果不是可使用命令查看卡到哪了:kubectl describe pods -n monitoring pod名称
bash
kubectl get pods -n monitoring
四、小结与展望
在"零 Helm、零外网、二进制 1.20.10"这种极端受限场景下,Kurator 依然可以通过"先源码编译、再拆包 YAML、最后自纳管"的路径跑通完整功能。对个人而言,最大的收获是:
- 真正体会到"把集群当资源"的声明式爽点------一条 YAML 就能让 3 台裸机瞬间拥有"舰队级"治理体感;
- GitOps 统一交付极大降低了"多环境漂移"风险,以前用 Ansible 需要 200 行 playbook,现在 20 行 YAML 搞定;
- 统一监控+策略让"事后救火"变成"事前拦截",上线两周已拦截 3 起无资源限制的"炸弹镜像"。
下一步计划:
- 通过使用kurator批量管理kubernetes;
- 把边缘 K3s 节点通过 KubeEdge 纳入同一 Fleet,验证"中心云+边缘云"混部;
- 基于 Kurator 的 ClusterClass 做"一键 day-2 升级",把 1.20.10 滚动到 1.26,实现"不带业务中断"的跨版本迁移;
如果你也在为多集群运维头疼,不妨给自己的老集群一次"舰长"机会------Kurator 不会让你失望。
Kurator 分布式云原生开源社区地址:https://gitcode.com/kurator-dev
Kurator 分布式云原生项目部署指南:https://kurator.dev/docs/setup/