背景

随着 5G、物联网设备的爆炸性增长以及智能终端不断增强的计算能力,带来了前所未有的数据量,传统的中心集中式计算捉襟见肘。“新基建”战略的实施,工业互联网、车联网/自动驾驶、智慧交通、云游戏及 VR/AR 等标杆应用引领产业融合,企业上云常态化,催生出分布式云,混合云,边缘云等概念。Gartner 预计到2025年,超过 50% 的组织将在其选择的地点使用分布式云选项,从而实现业务模型转型。企业生成的 75% 的数据将在传统数据中心或云之外的,更接近最终用户的边缘创建和处理。

云计算行业正在迎来了新一轮的增长,国内外厂商和开源社区率先行动,分别发布并开源了 Open Cluster Management (OCM) 项目和 Clusternet 项目,统一管理多云多集群下的 Kubernetes 应用,将云原生下沉实现云边端一体化。基于 OCM 与 Clusternet 打造新一代开放的多集群管理系统,管理从中心到边缘,从机房到终端的“集群网络”。

Clusternet

Clusternet ( Cluster Internet ) 是腾讯开源的多集群和应用管理软件,无论集群是运行在公有云、私有云、混合云还是边缘云上,Clusternet 都可以让您像在本地运行一样管理/访问它们,用 K8s API 集中部署和协调多集群的应用程序和服务。通过 Addon 插件方式,用户可以一键安装、运维及集成,轻松地管理数以百万计的 Kubernetes 集群,就像访问 Internet 一样自由便捷。

Clusternet 面向未来混合云、分布式云和边缘计算场景设计,支持海量集群的接入和管理,灵活的集群注册能力可以适应各种复杂网络条件下的集群管理需求,通过兼容云原生的 Kubernetes API 简化用户的管理和运维成本,加快用户业务的云原生转型。

Clusternet 为用户提供:

一站式管理各类 Kubernetes 集群

Clusternet 支持 Pull 模式和 Push 模式管理集群。即使集群运行在 VPC 内网中、边缘或防火墙后时,Clusternet 仍可建立网络隧道连接管理集群。

支持跨集群的服务发现及服务互访

在无专网通道的情况下,仍可提供跨集群的访问路由。

完全兼容原生 Kubernetes API

完全兼容 Kubernetes 的标准 API,比如:Deployment,StatefulSet,DaemonSet,同时也包括用户自定义的 CRD 等,用户从单集群应用升级到多集群只需做简单的配置,无需学习复杂的多集群 API。

支持部署 Helm Chart、Kubernetes 原生的应用以及自定义的 CRD

支持 Helm chart 类型应用,包括 Chart 的分发、差异化配置、状态的汇聚等,和原生 Kubernetes API 的能力一致。

丰富、灵活的配置管理

提供了多种类型的配置策略,用户可灵活的搭配这些配置来实现复杂的业务场景,比如多集群灰度发布。

Addon 能力,架构简单

采用了 Aggregated ApiServer 的方式,且不依赖额外的存储,架构简单,便于部署,大大降低了运维复杂度。

便捷接入

Clusternet 提供了完善的对接能力,支持 kubectl plugin[1] 以及 client-go[2],方便业务一键接入,具备管理多集群的能力。

OCM ( Open Cluster Management )

OCM (Open Cluster Management) 是一个社区驱动的项目,专注于 Kubernetes 应用的多集群和多云场景。OCM 旨在简化部署在混合环境下的多 Kubernetes 集群的管理工作,为 Kubernetes 生态圈不同管理工具拓展多集群管理能力。OCM 总结了多集群管理所需的基础概念,采用了 hub-agent 的架构,定义了多项多集群管理的原语和基础组件来达到多集群管理的要求:

  • 通过 ManagedCluster API 定义被管理的集群,同时 OCM 会安装名为 Klusterlet 的 agent 在每个集群里来完成集群注册,生命周期管理等功能。
  • 通过 Placement API 定义如何将配置或工作负载调度到哪些集群中。调度结果会存放在 PlacementDecision API 中。其他的配置管理和应用部署工具可以通过 PlacementDecision 决定哪些集群需要进行配置和应用部署。
  • 通过 ManifestWork API 定义分发到某个集群的配置和资源信息。
  • 通过 ManagedClusterSet API 对集群进行分组,并提供用户访问集群的界限。
  • 通过 ManagedClusterAddon API 定义管理探针如何部署到多个集群中以及其如何与 hub 端的控制面进行安全可靠的通信。

通过利用 OCM 的 API 原语,简化了开源多集群管理项目的部署和运维,拓展许多 Kubernetes 的单集群管理工具的多集群管理能力。例如:

  • 简化 submariner 等多集群网络解决方案的管理。利用 OCM 的插件管理功能将 submariner 的部署和配置集中到统一的管理平台上。
  • 为应用部署工具(KubeVela, ArgoCD 等)提供丰富的多集群负责调度策略和可靠的资源分发引擎。
  • 拓展现有的 Kubernetes 单集群安全策略治理工具(Open Policy Agent,Falco 等)使其具有多集群安全策略治理的能力。

OCM 还通过内置的两个管理插件分别用来进行应用部署和安全策略管理。其中应用部署插件采用了订阅者模式,可以通过定义订阅通道(Channel)从不同的源获取应用部署的资源信息。

Clusternet 与 OCM 结合迸发更强大能力

通过上文介绍可以看出,Clusternet 有着强大的集群接入和管理能力,支持各种复杂场景下的海量集群注册和管理,满足对未来混合云、分布式云和边缘计算的平台管理需求。 同时,OCM 有着成熟的多集群应用管理能力,通过多项多集群管理的原语和基础组件,实现各种 Kubernetes 项目和应用的多集群发布和管理。二者结合实现优势互补,强强联合,提供更为强大的多集群和应用治理能力。

如何将 OCM 与 Clusternet 的能力相结合,来自 Redhat 的社区开发者 (github: skeeey[3]) 实现了 clusternet-addon[4],基于 OCM 的 Addon-Framework[5],展示了 OCM 可以借助于 Clusternet 提供的强大集群管理能力,实现通过 RBAC 对子集群进行访问、通过 Push 模式分发应用到多个子集群中等。OCM 社区将与 Clusternet 社区紧密合作,将与 Clusternet 项目的集成作为一个子项目持续推进。

感兴趣的同学可以查看 clusternet-addon[6] 了解更多信息,或持续关注 OCM 和 Clusternet 项目社区获取最新的动态。

参与社区

OCM 与 Clusternet 项目是 Red Hat 红帽软件,Tencent 腾讯云与合作伙伴开源的重要项目,二者的结合展现了下一代开放的多集群管理平台的强大能力和无与伦比的扩展性,为未来各种新技术、新业态和新服务提供了坚实的平台基础和无限的可能性。

Clusternet 项目已发布 v0.3.0 版本,支持多集群和应用管理的多种特性,随着 Clusternet 的不断迭代,未来将为用户提供更加完备和强大的能力。

OCM 项目和 kubernetes 生态系统紧密结合,实现了 kubernetes sig-multicluster 的多个设计方案,包括 KEP-2149 Cluster ID [7]

和 KEP-1645 Multi-Cluster Services API 中关于 clusterset 的概念[8] 。也在和其他开发者在社区共同推动 Work API [9]) 的开发。

OCM 与 Clusternet 项目仍在快速的开发迭代,欢迎行业公司和社区开发者们共同参与,交流学习,共建未来更加开放,充满无限可能的云世界。

链接

- OCM 项目地址: https://github.com/open-cluster-management-io

- OCM官网地址: https://open-cluster-management.io

- Clusternet 项目地址: https://github.com/clusternet/clusternet

参考资料

[1]

kubectl plugin: https://github.com/clusternet/kubectl-clusternet

[2]

client-go: https://github.com/clusternet/clusternet/blob/main/examples/clientgo/READEME.md

[3]

skeeey: https://github.com/skeeey

[4]

clusternet-addon: https://github.com/skeeey/clusternet-addon

[5]

Addon-Framework: https://github.com/open-cluster-management/addon-framework

[6]

clusternet-addon: https://github.com/skeeey/clusternet-addon

[7]

KEP-2149 Cluster ID: https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/2149-clusterid

[8]

clusterset的概念: https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api

[9]

Work API: https://github.com/kubernetes-sigs/work-api

>【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!
![](https://img2020.cnblogs.com/other/2041406/202108/2041406-20210813125505764-1422188413.png)

基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台的更多相关文章

  1. 基于zookeeper+mesos+marathon的docker集群管理平台

    参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...

  2. 基于Python+Django的Kubernetes集群管理平台

    ➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...

  3. Clusternet - 新一代开源多集群管理与应用治理项目

    作者 徐迪,腾讯云容器技术专家. 汝英哲,腾讯云高级产品经理. 摘要 在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公 ...

  4. 腾讯发布 K8s 多集群管理开源项目 Clusternet

    11月4日,在腾讯数字生态大会上,腾讯宣布了云原生领域一项重磅开源进展-- K8s 多集群管理项目 Clusternet 正式开源. Clusternet 由腾讯联合多点生活.QQ音乐.富途证券.微众 ...

  5. 基于puppet分布式集群管理公有云多租户的架构浅谈

    基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍   在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...

  6. Ignite集群管理——基于静态IP的节点发现

    Ignite作为分布式内存,集群管理必不可少,Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于静态IP的节点发现. 两个最重要的TCP通信设置类: 1. ...

  7. Spark运行模式_基于YARN的Resource Manager的Custer模式(集群)

    使用如下命令执行应用程序: 和"基于YARN的Resource Manager的Client模式(集群)"运行模式,区别如下: 在Resource Manager端提交应用程序,会 ...

  8. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.6.集群管理命令

    3.6. 集群管理命令 3.6.1. RAC的启动与关闭 oracle rac默认会开机自启动,如需维护时可使用以下命令: 关闭: crsctl stop cluster 停止本节点集群服务 crsc ...

  9. 基于kubernetes构建Docker集群管理详解-转

    http://blog.liuts.com/post/247/ 一.前言        Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度 ...

随机推荐

  1. 深入理解 Go Map

    文章参考:Go语言设计与实现3.3 哈希表 哈希表的意义不言而喻,它能提供 O(1) 复杂度的读写性能,所以主流编程语言中都内置有哈希表. 哈希表的关键在于哈希函数, 好的哈希函数能减少哈希碰撞,提供 ...

  2. CentOS-yum安装Nginx

    查看系统版本 $ cat /etc/redhat-release Nginx 不在默认的 yum 源中,使用官网的 yum 源 $ rpm -ivh http://nginx.org/packages ...

  3. 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联 1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行 ...

  4. 测试基础(三) Jmeter安装

    前言 JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试. 进入Jmeter官网:https://jmeter.apache.org/,进行Jmeter压缩包的下载. ...

  5. Log4cpp配置文件及动态调整日志级别的方法

    一.log4cpp概述 Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下: 提供应用程序运行上下文,方便跟踪调试: 可扩展的.多种方式记录日志,包括命令 ...

  6. java基础---java8 新特性

    1. 函数式接口 函数式接口主要指只包含一个抽象方法的接口,如:java.lang.Runnable(java1.0).java.util.Comparator接口(java1.4)等. Java8提 ...

  7. JSP核心技术

    一.JSP基本概念 JSP是Java Server Page 的简称,跟Servlet 一样可以动态生成HTML响应,文件命名为XXX.jsp JSP 与Servlet 的区别: jsp经编译后就变成 ...

  8. docker之构建镜像

    构建Docker镜像有以下两种方法: 使用docker commit命令. 使用docker build命令和 Dockerfile 文件. 在这里并不推荐使用docker commit来构建镜像,而 ...

  9. css列表属性和样式控制

    如下图是360浏览器主页的内容,上边有导航,下边是新闻列表,这种布局很常见,今天就来学习css列表属性之后并制作它. 列表属性 html有三种类型的列表:无序列表,有序列表和自定义列表.设置列表标记有 ...

  10. MapReduce学习总结之架构

    一.MapReduce1.x架构 1)jobTracker:JT 作业的管理者 将作业分解成一堆任务:Task(MapTask和ReduceTask) 将任务分派给TaskTracker(TT)运行 ...