摘要:在最新发布的 v0.4.0 版本中,Kurator 进一步丰富了分布式云原生场景下的应用统一管理能力,以便更好地满足多云环境的复杂需求。

本文分享自华为云社区《Kurator v0.4.0:引领分布式云原生管理的全新篇章》,作者:华为云云原生团队。

Kurator 是一款开源的分布式云原生平台,融合了众多主流的云原生软件栈,如Kubernetes、Istio、Prometheus 等,旨在帮助用户构建和管理自己的分布式云原生基础设施,以推动企业的数字化转型。Kurator 体现了“基础设施即代码”的理念,允许用户以声明方式管理云、边缘或本地环境的基础设施。同时,其“开箱即用”的特性,使用户可以一键安装云原生软件栈。而借助Fleet,Kurator更提供了多云、多集群的统一管理,极大提升了管理效率。

在最新发布的 v0.4.0 版本中,Kurator 进一步丰富了分布式云原生场景下的应用统一管理能力,以便更好地满足多云环境的复杂需求。此次更新主要包括以下四个方面:

 采用了GitOps方式并利用Fleet来实现多云环境下的统一应用分。这种新的方法将降低多云异构环境配置的复杂性,简化了分布式部署的管理过程。

⦁ 为用户提供了一种基于Fleet、Prometheus和Thanos的统一集群指标监控方案。这种方案旨在提高在复杂的多云、多集群环境中的指标监控的全面性、准确性和实时性,从而提高运维效率并降低运维复杂性。

⦁ 通过利用Kyverno和Fleet,为多云、多集群环境下的策略管理提供了统一的解决方案。这一功能的加入将提高策略管理的效率,保证了在所有集群中的策略一致性和安全性。

⦁ 新增了一种名为"Attached Cluster"的集群类型。这种集群类型使得Kurator能够纳管任何地点、由任何工具搭建的Kubernetes集群,进一步加强了Kurator对分布式云环境的管理。

统一应用分发

随着多云、多集群的普及,如何有效在分布式云原生环境中部署和分发应用成为日益重要的话题。为此,Kurator 推出了统一应用分发功能,目标是解决以下问题:

  • 多云、多集群配置繁琐:在传统的多云环境中,部署同一应用需要在每个环境中进行复杂的配置,这无疑增加了部署的难度,同时消耗了不必要的时间和人力资源。
  • 维护版本一致性的挑战:在分布式的多云环境中,由于各个集群可能运行在不同的环境、拥有不同的配置,因此保持应用在所有集群中版本一致,并能及时进行更新,是一项挑战。
  • 分布式部署管理困难:应用在各个集群中部署后,需要分别进入每个集群,以检查部署是否成功以及查看部署的状态。

Kurator 的统一应用分发功能采用 GitOps 方式,使得一键将应用部署到多个云环境成为可能,同时简化了配置流程。这种方法确保了各集群中的应用版本保持一致,也能及时进行版本更新。在 Kurator 宿主集群上,用户可以对所有集群的应用部署情况进行统一的查看和管理,从而提高运维效率。

Kurator应用管理架构图

Kurator 基于 FluxCD,通过自动化的应用同步和部署流程,优化了部署效率和准确性。借助于 Fleet 的优势,它还能灵活地适应各种不同的业务和集群需求,满足用户对于应用分发的多样化需求。

Kurator 的统一应用分发功能提供了丰富而灵活的配置选项,用户可以通过 YAML 配置文件定义应用的源、同步策略等关键参数。同时,Kurator 还支持多种类型的源(包括 gitRepository,helmRelease等)和同步策略的组合。

以下是一个统一应用分发的例子:

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

此示例配置表达了如何借助 Kurator 实现多集群统一应用分发:从 Git 源中获取应用配置,然后通过 Fleet 进行同步和部署。用户只需简单的配置,即可迅速将应用部署到多个集群中。

关于更多例以及其他相关信息,请参考:https://kurator.dev/docs/fleet-manager/application/

统一集群指标监控

在复杂的多云、多集群环境中,统一的集群指标监控可以提升工作效率并且降低运维复杂性。对于许多企业来说,他们面临的挑战是如何在各个集群间进行有效的监控和管理,以确保服务的稳定性和优化资源使用率。

单一的监控工具常常无法满足全面、及时和准确的监控需求。这就需要运维人员分别进入每个集群进行检查,不仅增加了工作量,也可能导致关键指标信息的遗漏或延误。而且,由于不同的集群可能有不同的需求,管理工作变得更加复杂。

为解决上述问题,Kurator 提供了一种基于 Prometheus、Thanos、Grafana 以及 Fleet 的多集群指标监控方案,使用户能够轻松实现多集群的统一指标监控。

统一监控架构图

通常,集群权限和远程存储配置完成后,我们可以将在多集群环境中实现统一指标监控的过程概括如下:

  1. 每个集群运行一个 Prometheus 实例,负责收集本地的监控数据;

  2. 每个Prometheus 实例都附带一个 Thanos Sidecar,这个 Sidecar 将 Prometheus 收集到的数据推送到远程存储;

  3. Thanos Query 从所有的 Thanos Sidecar 和远程存储中聚合数据,并提供一个统一的查询接口;

  4. Grafana 连接到 Thanos Query,从而能够展示所有集群的统一监控视图。

借助于 Kurator 的 Fleet 的能力,用户无需亲自处理上述复杂流程。用户只需在 Fleet 中定义相关配置,Fleet Manager 就能自动完成上述流程。

下面是一个可以完成上述流程的 Fleet 配置示例:

apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: quickstart
namespace: default
spec:
clusters:
- name: kurator-member1
kind: AttachedCluster
- name: kurator-member2
kind: AttachedCluster
plugin:
metric:
thanos:
objectStoreConfig:
secretName: thanos-objstore
grafana: {}

在执行上述配置后,Fleet Manager 将会在 kurator-member1 与 kurator-member2 这两个集群上分别安装 Prometheus 和 Thanos Sidecar。然后,用户便可以在 Kurator 主机上通过 Grafana 仪表板查看所有集群的统一监控视图。

关于使用统一集群指标监控的更多细节,请参考:https://kurator.dev/docs/fleet-manager/metric-plugin/

统一策略管理

在分布式云环境中,为了满足多云、多集群的统一安全保护需求,Kurator 引入了统一策略管理功能,以解决以下问题:

  • 无法统筹多个集群的策略管理,跨集群应用同一策略

  • 多个子集群策略分散管理,冗余且复杂度较高,无法统一高效配置和管理

  • 无法统一限制多个集群资源使用情况,以保证所有集群遵循相同的操作规则和业务需求

Kurator 的策略管理能力基于 Kyverno,并利用 Fleet 实现应用策略的跨集群分发和应用这种机制允许策略在整个集群群组中被统一和高效地管理,避免了在每个子集群单独管理策略的复杂性。

统一策略管理架构图

Kurator 提供的策略管理能力与在单一 Kubernetes 集群中的策略管理几乎无异,用户可以快速熟悉和上手。下面是一个使用 Kurator 在 Fleet 中实现统一策略管理的示例:

apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: quickstart
namespace: default
spec:
clusters:
- name: kurator-member1
kind: AttachedCluster
- name: kurator-member2
kind: Cluster
- name: kurator-member3
kind: CustomCluster
plugin:
policy:
kyverno:
podSecurity:
standard: baseline
severity: high
validationFailureAction: Audit

在上述配置文件中,我们为 Fleet 中的集群统一应用了 podSecurityStandard 为 baseline,podSecuritySeverity 为 high 的 Pod 安全策略。当Pod配置违背安全策略时,在其创建过程将会在PolicyReport中记录相应事件;而当 validationFailureAction 设置为Enforce时,非法资源的创建或者更新就会被拦截。Fleet 中的所有集群都将运用此策略,应用运维和开发人员将在遵循该 Pod 安全性规定的前提下调整和配置应用。 借助 Kurator 的统一策略管理能力,可以有效提高策略管理的效率,同时保证所有集群中策略的一致性和安全性。

关于 Kurator 统一策略管理的更多信息,请参考:https://kurator.dev/docs/fleet-manager/policy/

AttachedCluster

在云原生的世界里,基础设施的复杂性和多样性是无法避免的问题。对于大型组织或公司来说,他们可能已经在不同的环境下部署了多个 Kubernetes 集群,而这些集群可能是由各种不同的工具创建的,并分布在世界各地。为了更好地解决这个问题,Kurator 在最新的版本中引入了一种新的集群类型,即 AttachedCluster

AttachedCluster 的主要目的是为了管理那些并非由Kurator创建,却又需要被纳入到Kurator舰队管理范围的 Kubernetes 集群。这些集群可以由任何工具创建,并位于任何地方。引入这种新的集群类型 ,使得Kurator的管理能力得以延伸,实现对真正的分布式云环境的高效管理。 在实际使用中,用户需要为预计要接入 Kurator 管理的 Kubernetes 集群创建 AttachedCluster 资源。这些资源中包含了集群的连接和身份验证信息,这些信息通过 Secret 进行安全存储和管理。有了这些信息,Kurator 就能够与这些集群进行有效的交互和管理。]

下面是一个示例: 

apiVersion: cluster.kurator.dev/v1alpha1
kind: AttachedCluster
metadata:
name: kurator-member1
namespace: default
spec:
kubeconfig:
name: kurator-member1
key: kurator-member1.config

资源创建完成后,用户还需要将这些 AttachedCluster 资源加入到 Kurator Fleet 中,从而将这些集群纳入 Kurator 的管理范围。这样一来,无论这些集群在何处,由何种工具创建,都能够在 Kurator 中进行统一的管理和监控。

下面是一个将上述 AttachedCluster 加入 Fleet 的例子:

apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: quickstart
namespace: default
spec:
clusters:
# 在此处添加 AttachedCluster 或者其他类型的集群
- name: kurator-member1
kind: AttachedCluster

对于用户来说,Kurator 通过引入 AttachedCluster,在统一平台上实现了对所有 Kubernetes 集群的便捷管理,避免了在各种工具之间的频繁切换,有效地监控与管理了分布式云环境中各个集群。这个改进,不仅强化了 Kurator 在云原生领域中的管理能力,也扩展了其管理范围,使得 Kurator 在处理复杂多样的云计算环境中的适应力和管理效率得到了显著提升。

参考链接

Release Notes:https://github.com/kurator-dev/kurator/releases/tag/v0.4.0

统一应用分发文档:https://kurator.dev/docs/fleet-manager/application/

统一集群指标监控文档:https://kurator.dev/docs/fleet-manager/metric-plugin/

统一策略管理文档:https://kurator.dev/docs/fleet-manager/policy/

AttachedCluster文档:https://kurator.dev/docs/fleet-manager/manage-attachedcluster/

Fleet Manager 文档:https://kurator.dev/docs/fleet-manager/

GitHub地址:https://github.com/kurator-dev/kurator

Kurator主页:https://kurator.dev/

Slack地址:https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A

点击关注,第一时间了解华为云新鲜技术~

Kurator v0.4.0版本更新4大内容,满足多云环境的复杂需求的更多相关文章

  1. 分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

    摘要:北京时间2023年2月9日,Kurator 正式发布 v0.2.0 版本. 本文分享自华为云社区<分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台>,作 ...

  2. Kurator v0.3.0版本发布

    摘要:2023年4月8日,Kurator正式发布v0.3.0版本. 本文分享自华为云社区<华为云 Kurator v0.3.0 版本发布!集群舰队助力分布式云统一管理>,作者:云容器大未来 ...

  3. Nacos 发布 v0.8.0 Pre-GA版本,安全稳定上生产?

    服务注册和服务配置开源项目 Nacos 本周发布了 v0.8.0 Pre-GA 版本,作为开源项目生命周期中的里程碑版本之一,v0.8.0 Pre-GA版本支持登录.命名空间.Metrics监控(对接 ...

  4. GraphScope v0.12.0 版本发布

    GraphScope 每月进行常规版本的迭代与发布,GraphScope v0.12.0 全新版本在四月如期而至.v0.12.0 为交互式图查询 GAIA 引入全新的 IR 层以及新增 Giraph ...

  5. LAL v0.32.0发布,更好的支持纯视频流

    Go语言流媒体开源项目 LAL 今天发布了v0.32.0版本.距离上个版本刚好一个月时间,LAL 依然保持着高效迭代的状态. LAL 项目地址:https://github.com/q19120177 ...

  6. Android 5.0(棒棒糖))十大新特性

    Android 5.0(棒棒糖))十大新特性 1. 全新Material Design设计风格 Android Lollipop全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新.换句话说,谷 ...

  7. 开源社交系统ThinkSNS+ V0.8.0 正式发布(一期功能版本)

    智士软件旗下开源sns社交系统ThinkSNS即将进入10周年,推出并行两代系统ThinkSNSV4和ThinkSNS+,以专业易用的技术源码输出,驱动互联网社交软件建设及创业,使用ThinkSNS改 ...

  8. HMS Core 机器学习服务6.4.0版本更新啦,文本翻译功能增加10种小语种语言类型!

    近日,HMS Core机器学习服务(ML Kit)文本翻译功能在6.4.0版本更新中增加了10种小语种语言类型,分别是马其他语.马其顿.冰岛.乌尔都语.波斯尼亚语.乌克兰语.加泰罗尼亚语.斯洛文尼亚语 ...

  9. Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):5、Maven版本发布与后续版本更新(大结局)

    文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...

  10. Google Tensorflow 源码编译(三):tensorflow<v0.5.0>

    这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Tens ...

随机推荐

  1. 结合ChatGPT和MINDSHOW自动生成PPT

    结合chatGPT和MINDSHOW自动生成PPT应用场景 总结/朱季谦 一.首先,通过chatGPT说明你的需求,学会提问是Ai时代最关键的一步.你需要提供一些关键信息,如果没有关键信息,就按照大纲 ...

  2. 一分钟使用Gitee,把本地项目放入gitee仓库中

    一.先创建一个Gitee账号 首先需要自己去别的地方看创建一个空仓库,然后复制仓库的地址 省略... 现有本地有项目代码,远程空仓库一个,如何把本地项目代码推到远程仓库? 1.在项目根目录初始化 Gi ...

  3. 【迭代器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

    简介 迭代器模式(Iterator Pattern),是一种结构型设计模式.给数据对象构建一套按顺序访问集合对象元素的方式,而不需要知道数据对象的底层表示. 迭代器模式是与集合共存的,我们只要实现一个 ...

  4. Java SpringBoot 加载 yml 配置文件中字典项

    将字典数据,配置在 yml 文件中,通过加载yml将数据加载到 Map中 Spring Boot 中 yml 配置.引用其它 yml 中的配置.# 在配置文件目录(如:resources)下新建app ...

  5. MySQL大量脏数据,如何只保留最新的一条?

    因为系统的一个Bug,导致数据库表中出现重复数据,需要做的是删除重复数据且只保留最新的一条数据. 具体场景是这样的 有张订单关联额外费用表,而且一个订单号(order_no)记录只能关联同一个费用(c ...

  6. 理解Java程序的执行

    main 方法 public class Solution { public static void main(String[] args) { Person person = new Person( ...

  7. .NET开源分布式锁DistributedLock

    一.线程锁和分布式锁 线程锁通常在单个进程中使用,以防止多个线程同时访问共享资源. 在我们.NET中常见的线程锁有: 自旋锁:当线程尝试获取锁时,它会重复执行一些简单的指令,直到锁可用 互斥锁: Mu ...

  8. 为什么 Go for-range 的 value 值地址每次都一样?

    原文链接: 为什么 Go for-range 的 value 值地址每次都一样? 循环语句是一种常用的控制结构,在 Go 语言中,除了 for 关键字以外,还有一个 range 关键字,可以使用 fo ...

  9. 考前必备fa宝——对拍

    2022.11.24:晚上zxs学长发来了他的博客,所以我仿照写一篇. https://www.cnblogs.com/Dita/p/duipai.html 对拍 对拍这个东西,就是可以比较两份代码跑 ...

  10. 关于java中的super

    首当其冲先说一下super的用途和含义.他是用于调用一些被重写的方法. 这里还可以复习一下子这个重写:重写是把新的方法放在被重写的方法前面.在被重写的子类中,优先调用重写后的方法.但是如果想要调用原本 ...