Kurator 分布式云原生平台从入门到实战教程

Kurator 是华为云开源的分布式云原生平台,旨在帮助用户一站式构建和管理多云、多集群、云边协同的分布式云原生基础设施。它整合了众多主流云原生技术栈,如 Kubernetes、Karmada(多集群编排)、KubeEdge(边缘计算)、Istio(服务网格)、Prometheus(监控)、Volcano(批调度)等,提供"开箱即用"的统一管理能力。Kurator 的核心在于"舰队(Fleet)"概念,将多个分布式集群抽象为一个逻辑舰队,实现统一治理、应用分发、流量治理、监控和策略管理。

为什么选择 Kurator?在多云环境下,传统 Kubernetes 管理面临集群孤岛、运维复杂、资源浪费等问题。Kurator 通过声明式 API(基础设施即代码,IaC)简化这些痛点,支持 AWS 等公有云、本地数据中心和边缘场景,适用于企业数字化转型。开源地址:https://github.com/kurator-dev/kurator。根据官方文档,Kurator 强调生态连接价值,能降低多云运维复杂度,提高效率。

本教程从基础安装到高级实战,适合初学者和运维工程师。假设您有基本的 Linux 和 Kubernetes 知识。我们将逐步覆盖环境准备、集群管理、Fleet 应用、监控策略等。教程基于 Kurator v0.6.0 版本,预计阅读和实践时间 2-4 小时。注意:所有命令在 Linux 环境下执行,确保有 root 权限。

(上图:Kurator 分布式云原生平台架构图,展示多集群统一管理框架,包括 Fleet 层、应用分发和监控组件。)

第一章:环境准备和 Kurator 安装

1.1 系统要求

  • 操作系统:Ubuntu 20.04+ 或 CentOS 7+
  • 硬件:至少 4 核 CPU、8GB 内存、50GB 存储(用于测试环境)
  • 软件:Docker v20+、Kubernetes v1.24+(Kind 用于本地测试)、Helm v3+、Git
  • 网络:确保服务器间网络连通,防火墙允许 SSH(22 端口)和 Kubernetes 端口(6443 等)

安装 Docker 和 Kind:

bash 复制代码
curl -fsSL https://get.docker.com | bash
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind

1.2 安装 Cert-Manager

Kurator 的 Cluster Operator 依赖 Cert-Manager 用于证书管理。

bash 复制代码
helm repo add jetstack https://charts.jetstack.io
helm repo update
kubectl create namespace cert-manager
helm install -n cert-manager cert-manager jetstack/cert-manager --set crds.enabled=true --version v1.15.3

验证:

bash 复制代码
kubectl get pods -n cert-manager

等待所有 Pod Running。

1.3 安装 Kurator Cluster Operator

有三种方式:从源代码、发布包或 Helm Repo。我们推荐 Helm Repo 方式,便于更新。

从 Helm Repo 安装
bash 复制代码
helm repo add kurator https://kurator-dev.github.io/helm-charts
helm repo update
helm install --create-namespace kurator-cluster-operator kurator/cluster-operator --version=0.6.0 -n kurator-system

验证:

bash 复制代码
kubectl get pod -l app.kubernetes.io/name=kurator-cluster-operator -n kurator-system

输出示例:

复制代码
NAME                                        READY   STATUS    RESTARTS   AGE
kurator-cluster-operator-5977486c8f-7b5rc   1/1     Running   0          21h
从源代码安装(适用于开发)

克隆仓库:

bash 复制代码
git clone https://github.com/kurator-dev/kurator.git
cd kurator

构建镜像和 Chart:

bash 复制代码
VERSION=0.6.0 make docker
VERSION=0.6.0 make gen-chart

加载镜像到 Kind:

bash 复制代码
kind load docker-image ghcr.io/kurator-dev/cluster-operator:0.6.0 --name kurator-host
kind load docker-image ghcr.io/kurator-dev/fleet-manager:0.6.0 --name kurator-host

安装:

bash 复制代码
cd out/charts/
helm install --create-namespace kurator-cluster-operator cluster-operator-0.6.0.tgz -n kurator-system
从发布包安装
bash 复制代码
curl -LO https://github.com/kurator-dev/kurator/releases/download/v0.6.0/cluster-operator-0.6.0.tgz
helm install --create-namespace kurator-cluster-operator cluster-operator-0.6.0.tgz -n kurator-system

安装后,Kurator 会在 kurator-system 命名空间运行 Operator,用于管理集群生命周期。如果遇到错误,如镜像拉取失败,检查网络或使用代理。

(上图:Kubernetes 集群设置截图,展示 Kind 环境下的本地集群创建过程。)

到此,您已完成 Kurator 基础安装。接下来进入集群管理实战。

第二章:创建和管理 On-Premise Kubernetes 集群

Kurator 基于 Cluster API 和 KubeSpray 提供 On-Premise 集群生命周期管理,包括创建、升级、扩展和删除。以下是详细步骤。

2.1 先决条件

  • SSH 密钥:在服务器上生成并分发密钥。
bash 复制代码
ssh-keygen
ssh-copy-id user@200.x.x.1
ssh-copy-id user@200.x.x.2

验证无密码登录。

  • 创建 Secret:
bash 复制代码
kubectl create secret generic cluster-secret --from-file=ssh-privatekey=/root/.ssh/id_rsa

描述 Secret:

bash 复制代码
kubectl describe secrets cluster-secret

2.2 配置集群资源

Kurator 使用 Cluster、KubeadmControlPlane (KCP)、CustomCluster、CustomMachine 四种资源。

复制示例:

bash 复制代码
cp -rfp examples/infra/customcluster examples/infra/my-customcluster

编辑 cc-custommachine.yaml:

yaml 复制代码
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: CustomMachine
metadata:
  name: cc-custommachine
  namespace: default
spec:
  master:
  - hostName: master1
    publicIP: 200.x.x.1
    privateIP: 192.x.x.1
    sshKey:
      apiVersion: v1
      kind: Secret
      name: cluster-secret
  node:
  - hostName: node1
    publicIP: 200.x.x.2
    privateIP: 192.x.x.2
    sshKey:
      apiVersion: v1
      kind: Secret
      name: cluster-secret

可选参数:如 KubeVersion: v1.26.5, PodCIDR: "192.168.0.0/16", CNIPlugin: cilium。

2.3 部署集群

应用配置:

bash 复制代码
kubectl apply -f examples/infra/my-customcluster

监控:

bash 复制代码
kubectl get pod | grep cc-customcluster-init
kubectl logs cc-customcluster-init

安装需 10-30 分钟。验证:

bash 复制代码
kubectl get po -A

预期看到 CoreDNS、Cilium 等 Pod Running。

2.4 高可用 (HA) 控制平面

编辑 cc-customcluster.yaml 添加 VIP:

yaml 复制代码
spec:
  cni:
    type: cilium
  controlPlaneConfig:
    address: 192.x.x.0
    loadBalancerDomainName: my-apiserver-lb.kurator.com
    certSANs: [200.x.x.1,200.x.x.2]

应用并验证 kube-vip Pod:

bash 复制代码
kubectl get po -A | grep kube-vip

2.5 集群扩展

编辑 scale.yaml 添加/移除节点:

yaml 复制代码
spec:
  node:
  - hostName: node2
    publicIP: 200.x.x.3
    privateIP: 192.x.x.3
    sshKey: ...

应用:

bash 复制代码
kubectl apply -f examples/infra/my-customcluster/scale.yaml

监控 scale-up/down Pod。

2.6 集群升级

编辑 KCP:

bash 复制代码
kubectl edit kcp cc-kcp

更新 version: v1.26.5。监控 upgrade Pod:

bash 复制代码
kubectl get pod -A | grep upgrade

注意:逐级升级,避免跳版本。

2.7 集群删除

bash 复制代码
kubectl get clusters.cluster.x-k8s.io
kubectl delete clusters.cluster.x-k8s.io cc-cluster

监控 terminate Pod。删除需 ~5 分钟。

通过这些步骤,您能轻松管理 On-Premise 集群。

(上图:Kurator 架构图,突出 CustomCluster 和 Fleet 集成。)

第三章:Fleet 管理和多集群协同

Fleet 是 Kurator 的核心抽象,将多个集群视为一个逻辑单位,支持统一治理。

3.1 Fleet 快速上手

首先,准备多个 Kubernetes 集群(使用 Kind 创建 host 和 member 集群):

bash 复制代码
hack/local-dev-setup.sh
export KUBECONFIG=/root/.kube/kurator-host.config

创建 Fleet:

编辑 fleet.yaml:

yaml 复制代码
apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
  name: quickstart
  namespace: default
spec: {}

应用:

bash 复制代码
kubectl apply -f fleet.yaml

加入成员集群:创建 AttachedCluster 并关联 Kubeconfig Secret。

示例 attachedcluster.yaml:

yaml 复制代码
apiVersion: fleet.kurator.dev/v1alpha1
kind: AttachedCluster
metadata:
  name: member1
  namespace: default
spec:
  kubeconfig:
    name: member1-kubeconfig
    key: value
  fleet:
    name: quickstart
    namespace: default

应用并验证:

bash 复制代码
kubectl get attachedcluster

3.2 多集群操作

Fleet 支持同步配置。查看 Fleet 状态:

bash 复制代码
kubectl get fleet quickstart -o yaml

预期看到 joinedClusters。

Fleet 奠定多集群基础,接下来探讨应用分发。

(上图:Kurator Fleet 管理仪表盘,展示集群列表和健康状态。)

第四章:统一应用分发

Kurator 通过 Fleet 实现统一应用分发,支持 GitOps 和 FluxCD。

4.1 架构概述

应用分发基于 PropagationPolicy,使用 Karmada 分发资源到成员集群。

4.2 实战步骤

创建 Application:

编辑 application.yaml:

yaml 复制代码
apiVersion: fleet.kurator.dev/v1alpha1
kind: Application
metadata:
  name: nginx-app
  namespace: default
spec:
  source:
    gitRepository:
      url: https://github.com/example/repo
      branch: main
  syncPolicies:
  - fleet: quickstart
    override: {}

应用:

bash 复制代码
kubectl apply -f application.yaml

监控分发:

bash 复制代码
kubectl get application nginx-app -o yaml

支持灰度发布:添加 rolloutStrategy。

在成员集群验证 Nginx Pod:

bash 复制代码
export KUBECONFIG=/root/.kube/kurator-member1.config
kubectl get pods

4.3 高级分发

使用 OverrideRules 自定义每个集群配置,如不同镜像标签。

应用分发是 Kurator 的关键功能,提升多云一致性。

第五章:监控和策略管理

5.1 多集群监控

Kurator 集成 Prometheus,实现统一监控。

启用:

编辑 monitoring.yaml:

yaml 复制代码
apiVersion: fleet.kurator.dev/v1alpha1
kind: Monitoring
metadata:
  name: fleet-monitoring
spec:
  fleet: quickstart

应用并查看仪表盘(需安装 Grafana)。

5.2 策略管理

基于 Kyverno,自动部署策略引擎。

创建 Policy:

yaml 复制代码
apiVersion: fleet.kurator.dev/v1alpha1
kind: Policy
metadata:
  name: restrict-images
spec:
  fleet: quickstart
  kyvernoPolicies:
  - name: restrict-images
    policy: |
      apiVersion: kyverno.io/v1
      kind: ClusterPolicy
      metadata:
        name: restrict-images
      spec:
        rules:
        - name: check-images
          match:
            resources:
              kinds:
              - Pod
          validate:
            message: "Images must be from trusted registry"
            pattern:
              spec:
                containers:
                - image: "myregistry.com/*"

应用:

bash 复制代码
kubectl apply -f policy.yaml

验证策略生效:尝试部署非信任镜像,应被拒绝。

监控和策略确保系统安全和可观测性。

(上图:Kurator 统一监控实战截图,展示告警和仪表盘。)

结论

通过本教程,从安装到实战掌握了 Kurator 的核心功能。Kurator 简化分布式云原生管理,助力企业高效运维。

相关推荐
一起养小猫2 小时前
【贡献经历】从零到贡献者:我的Kurator开源社区参与之旅
分布式·物联网·云原生·开源·华为云·istio·kurator
MonkeyKing_sunyuhua2 小时前
ubuntu22.04 重启 Docker 服务、设置 Docker 开机自启、设置容器自启动
云原生
2501_940198692 小时前
【前瞻创想】Kurator云原生实战:从入门到精通,打造分布式云原生新生态
分布式·云原生
Wang's Blog2 小时前
RabbitMQ: 消息发送失败的重试机制设计与实现
分布式·rabbitmq
free-elcmacom3 小时前
机器学习高阶教程<8>分布式训练三大核心策略拆解
人工智能·分布式·python·机器学习
沉迷技术逻辑3 小时前
微服务保护和分布式事务
分布式·微服务·架构
凤凰战士芭比Q4 小时前
Jenkins(分布式、用户管理)
运维·分布式·jenkins
专注API从业者4 小时前
构建企业级 1688 数据管道:商品详情 API 的分布式采集与容错设计
大数据·开发语言·数据结构·数据库·分布式