Clusternet - 新一代开源多集群管理与应用治理项目
作者
徐迪,腾讯云容器技术专家。
汝英哲,腾讯云高级产品经理。
摘要
在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公共云服务提供商,或者两个私有云,或者多地域的边缘云。
新的形态导致基础设施的管理和应用治理的方式发生变化,传统的技术架构与管理方式增加了复杂性和风险,难以满足跨多个平台的应用服务部署和治理的挑战,代表业内最新理念的 Clusternet 项目应运而生。
开源 Clusternet 项目
Clusternet ( Cluster Internet ) 是腾讯云开源的兼具多集群管理和跨集群应用编排的云原生项目,让管控多集群就像上网一样简单。。无论你的 Kubernetes 集群是运行在公有云、私有云、混合云还是边缘云上,都拥有一致的管理/访问体验,利用 K8s API 集中部署和协调多集群的应用程序和服务。
Clusternet 采用 Addon 插件的方式,方便用户一键安装、运维及集成,轻松地管理数以百万计的 Kubernetes 集群,让云计算像 Internet一样无所不在,自由便捷。
以 Clusternet 项目为基础实现多云多集群管理平台,为用户提供跨云、跨集群、跨 region/zone 的分布式容器服务,将更好的满足多种场景需求。
● 多租户
● 高可用与容灾
● 多云多中心服务
● 边缘计算
架构理念
Clusternet 面向未来云原生多云多集群而设计,领先的架构支持用户以全局视角统一管理各个集群及应用,轻松地将用户业务发布至全球,一次发布处处运行。
集群管理集群
Clusternet 遵循云原生理念,所有管理组件通过 Addon 的方式灵活部署在 Kubernetes 集群中,实现 K8s-on-K8s 集群管理集群。
对比社区其他多集群管理方案,无需学习和维护复杂的平台软件和系统,也无需维护额外的控制面的组件及 etcd。Clusternet 集群管理完全复用已有的 Kubernetes 集群及端口,通过 AA (Aggregated APIServer) 的方式进行工作,方便灵活扩展,大大减轻运维复杂度和资源消耗。

Clusternet 架构上保证轻量化和精简,组件包括:
1、 clusternet-hub
组件 clusternet-hub 部署和运行在父集群中,通过 AA (Aggregated APIServer)的方式进行工作。
主要负责:
● 批准各个子集群的注册请求,并为其创建专属的资源,如命名空间(namespace)、服务帐户(ServiceAccount)和 RBAC 规则等。
● 维护父集群跟各个子集群的长链接
● 提供 Kubernetes 风格 的 REST API 用于访问各个子集群,尤其是对于边缘子集群的访问,同时还支持子集群的服务互访
● 支持多集群的应用分发及治理
2、clusternet-agent
组件 clusternet-agent 部署在各个子集群中。
主要负责:
● 将当前集群自动注册到父集群中作为子集群。
● 建立与父集群的 TCP 全双工的 websocket 安全隧道。支持通过 FeatureGate “SocketConnection” 选择是否要建立安全隧道。如果关闭该特性的话,即意味着父集群可以通过直连的方式访问子集群。
● 上报集群的心跳信息,包括 Kubernetes 版本、平台信息、healthz/readyz/livez 健康状态、集群容量、节点状态等
基于 Clusternet 轻量和灵活的架构,支持父集群自注册,Clusternet-hub 可向自身所在集群发布应用,该种方式最大化的利用父集群资源,并可以快速地扩展用户现有的集群,轻松具备管理海量公有云、私有云、边缘云集群的能力。
任意资源类型的多集群分发
Clusternet 支持向不同集群分发和管理各种应用资源,包括原生 Kubernetes 各类资源(Deployment/StatefulSet/ConfigMap/Secret 等)、各类 CRD 资源,以及 HelmChart 应用等等。
下图是 Clusternet 的多集群应用分发模型,其中绿色的模块是需要用户去创建的,紫色的模块是 Clusternet 内部做流转的资源对象。Clusternet 提供了 kubectl 插件,可以通过 “kubectl clusternet apply” 命令来创建资源。

Clusternet 资源分发模型采用松耦合的设计,用户无须更改或重新编写已有的资源对象,仅需要额外定义分发策略 (Subscription)和差异化配置(Localization/Globalization)即可实现多集群的应用分发。
● 兼容任意资源类型
完全兼容 K8s 的标准资源,比如Deployment、StatefulSet、DaemonSet,以及各种自定义的 CRD 等,无需学习复杂的多集群资源的 CRD 定义。
● Subscription
定义希望安装到集群中的资源。对于每个匹配的集群,将在其专属的命名空间中创建相应的Base对象
● Localization & Globalization
在多集群应用分发的时,还可以利用 Localization 和 Globalization 差异化策略用于不同集群间的差异化配置。其中Localization描述 namespace-scoped (命名空间作用域)的差异化配置策略,Globalization 描述 cluster-scoped (集群作用域) 的差异化配置策略,两者均支持按照 Priority(优先级)进行管理和配置。这个特性对于面向多集群的蓝绿发布、金丝雀发布、版本升级等场景非常灵活实用。
● Base & Description
Clusternet 会自动生成 Base 和 Description 对象,用以观察和跟踪各个应用资源的分发情况。其中 Description 是 Base 对象通过 Localization 和 Globalization 差异化配置渲染后得到的对象,即描述着最终要部署到目标子集群的对象定义。
云原生生态完全兼容
Clusternet 在项目设计之初,就全面兼容云原生生态。
Clusternet 提供了多平台的版本支持,包括常见的 Linux 各平台,比如 x86,arm64,armv6,ppc64le,s390x。
Clusternet 还提供了 kubectl 插件 (kubectl-clusternet),直接通过 kubectl 命令行进行操作,无需引入额外 CLI 工具,也无需切换 kubeconfig 的 context,即可进行多集群资源的创建、更新、编辑、删除、扩缩容等操作,方便兼容用户现有的 CICD 发布系统。
此外,Clusternet 还提供了对 client-go 的支持,完全兼容各版本的 client-go。Clusternet 通过 wrapperFunc 以无侵入的方式提供了 Clusternet 多集群对接能力。开发者可以参考文档指引,最快通过三行代码,就可在您的系统里实现多集群和应用管理能力。
Clusternet 支持云原生生态的软件和项目,从 v0.2.0 版本开始就支持对 Helm Charts 的多集群分发。基于 Clusternet 对任意 K8s 资源的原生支持,所有 K8s 生态的项目和软件都可通过 Clusternet 项目实现多集群能力。
注: kubectl-clusternet 即将添加成为 Kubectl 官方 plugin ,详细信息参考 PR ,未来可通过 “kubectl krew install clusternet” 一键安装该插件,现阶段可以先通过直接下载二进制文件的方式来使用。
未来展望
Clusternet 是腾讯最新开源的多集群管理与应用治理项目,全新的架构设计遵循云原生理念,完全兼容原生 K8s 资源并扩展至多集群,支持用户快捷和低成本的对接 K8s 云原生生态,助力您的业务向未来分布式云的转型。
当前 Clusternet 仍在快速开发迭代中,即将发布 v0.4.0 版本,带来更多优秀的特性,欢迎大家持续关注。Clusternet 愿与各个领域的同仁一起,求实创新,砥砺前行,共同开创万物智联、虚实共生和全真互联的新时代。
加入我们
Clusternet 项目开源进行时,欢迎关注 https://github.com/clusternet/clusternet 点赞支持。
我们正在限量召集 Clusternet 的第一批开源技术粉丝,只要你对 Clusternet 及相关技术感兴趣,都欢迎加入,参与方式:关注-公-众-号:【腾讯云原生】,添加小助手进群。
我们的开源技术粉丝将可以享受到以下特殊福利哦~
1、 专属开源技术粉丝交流群
2、 与项目作者、业内专家等直接交流
3、 更多社区活动和福利等你来参加
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!
Clusternet - 新一代开源多集群管理与应用治理项目的更多相关文章
- 基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台
背景 随着 5G.物联网设备的爆炸性增长以及智能终端不断增强的计算能力,带来了前所未有的数据量,传统的中心集中式计算捉襟见肘."新基建"战略的实施,工业互联网.车联网/自动驾驶.智 ...
- 腾讯发布 K8s 多集群管理开源项目 Clusternet
11月4日,在腾讯数字生态大会上,腾讯宣布了云原生领域一项重磅开源进展-- K8s 多集群管理项目 Clusternet 正式开源. Clusternet 由腾讯联合多点生活.QQ音乐.富途证券.微众 ...
- 美团点评Kubernetes集群管理实践
背景 作为国内领先的生活服务平台,美团点评很多业务都具有非常显著.规律的”高峰“和”低谷“特征.尤其遇到节假日或促销活动,流量还会在短时间内出现爆发式的增长.这对集群中心的资源弹性和可用性有非常高的要 ...
- [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等
原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...
- 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等
作者:大数据女神-诺蓝(微信公号:dashujunvshen).本文是36大数据专稿,转载必须标明来源36大数据. 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要 ...
- Docker集群管理工具 - Kubernetes 部署记录 (运维小结)
一. Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...
- 集群管理工具Salt
集群管理工具Salt 简介 系统管理员(SA)通常需要管理和维护数以百计的服务器,如果没有自动化的配置管理和命令执行工具,那么SA的工作将会变得很繁重.例如,要给集群中的每个服务器添加一个系统用户,那 ...
- 一步到位分布式开发Zookeeper实现集群管理
说到分布式开发Zookeeper是必须了解和掌握的,分布式消息服务kafka .hbase 到hadoop等分布式大数据处理都会用到Zookeeper,所以在此将Zookeeper作为基础来讲解. Z ...
- elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)
一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...
随机推荐
- Qt绘图浅析与实例
1. Qt5位置相关函数 Q提供了很多关于获取窗体位置及显示区域大小的函数,如x().y()和pos().rect().size().geometry()等,统称为"位置相关函数" ...
- SpringBoot缓存管理(三) 自定义Redis缓存序列化机制
前言 在上一篇文章中,我们完成了SpringBoot整合Redis进行数据缓存管理的工作,但缓存管理的实体类数据使用的是JDK序列化方式(如下图所示),不便于使用可视化管理工具进行查看和管理. 接下来 ...
- web自动化之浏览器启动
一.环境准备 1.本地引入jar 从http://selenium-release.storage.googleapis.com/index.html?path=3.9/,下载selenium-ser ...
- deepin安装Motrix,cocomusic
1,motrix(下载工具):https://motrix.app/ 2,cocomusic(开源音乐播放器):https://github.com/xtuJSer/CoCoMusic/release ...
- python -- 程序异常与调试(识别异常)
一.识别异常 程序中出现的错误又称为异常.异常通常分为两大类:编译错误和运行错误. 如下源码是已经修改: # -----------------------------------------# 编程 ...
- Vue 可拖拽组件 Vue Smooth DnD 详解和应用演示
本文发布自 https://www.cnblogs.com/wenruo/p/15061907.html 转载请注明出处. 简介和 Demo 展示 最近需要有个拖拽列表的需求,发现一个简单好用的 Vu ...
- mysql实现主从复制、读写分离的配置方法(一)
1. 测试环境 两个CentOS7虚拟机 mysql 5.5-MariaDB master_ip:192.168.1.109 slave_ip:192.168.1.118 2. 配置主服务器 2.1 ...
- python安装pyeda库--windows版
本页介绍了如何购买自己的PyEDA闪亮副本.PyEDA项目的主要目标是成为主流的Python软件包,并遵守社区中遵守的大多数约定. 支持平台 PyEDA支持Windows以及任何带有C编译器的平台.作 ...
- ASP.NET Core下FreeSql的仓储事务
ASP.NET Core下FreeSql的仓储事务 第一步:配置 Startup.cs 注入 引入包 dotnet add package FreeSql dotnet add package Fre ...
- Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
实际项目中遇到的需求 同一个链接需要加载不同的页面组件.根据用户所购买服务的不同,有不同的页面展现. 有一些不好的实现方式 直接把这几个组件写在同一个组件下,通过v-if去判断.如果这么做的话,甚至可 ...
