【探索实战】基于Kubernetes部署Kurator

👨‍🎓博主简介

🏅CSDN博客专家

🏅云计算领域优质创作者

🏅华为云开发者社区专家博主

🏅阿里云开发者社区专家博主

💊交流社区: 运维交流社区 欢迎大家的加入!

🐋 希望大家多多支持,我们一起进步!😄

🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

  • 一、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 控制器就会:

  1. 调用 Cluster API 在 AWS/VMware/裸机创建/升级/删除集群;
  2. 通过 FluxCD 把 Git 仓库渲染成多集群 HelmRelease;
  3. 通过 Istio east-west gateway 做跨集群负载均衡;
  4. 通过 Prometheus+Thanos 侧车把指标汇聚到中心 Bucket;
  5. 通过 Kyverno 做跨集群策略审计。

一句话总结:Kurator 是"以 K8s 方式管理 K8s 舰队"的 K8s 原生操作系统。

二、Kurator 和 Kubernetes 的关系

2.1 不是替代,而是"叠加"

Kurator 不会替换 kube-apiserverkubelet 等任何原生组件,它只做三件事:

  1. 把"集群"当做自定义资源管理(Cluster API 范式);
  2. 把"跨集群交付"当做 GitOps 管道(FluxCD 范式);
  3. 把"跨集群观测/策略"当做联邦式数据面(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 + 被纳管

注意事项:

  • 需提前关闭所有节点的 firewalldselinux;
bash 复制代码
# 禁止防火墙开机自启,关闭防火墙
systemctl disable firewalld && systemctl stop firewalld

# 永久关闭selinux
vim /etc/selinux/config
## 吧selinux=改为disabled
SELINUX=disabled
  • 提前安装 kubernetsdockercfssl

二进制部署kubernetesdockercfssl可参考: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、最后自纳管"的路径跑通完整功能。对个人而言,最大的收获是:

  1. 真正体会到"把集群当资源"的声明式爽点------一条 YAML 就能让 3 台裸机瞬间拥有"舰队级"治理体感;
  2. GitOps 统一交付极大降低了"多环境漂移"风险,以前用 Ansible 需要 200 行 playbook,现在 20 行 YAML 搞定;
  3. 统一监控+策略让"事后救火"变成"事前拦截",上线两周已拦截 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/

相关推荐
Leinwin3 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382503 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇3 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7593 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣4 小时前
智能体选型实战指南
运维·人工智能
yy55274 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ5 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔6 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密6 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20156 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑