徐迪,腾讯云容器技术专家。
汝英哲,腾讯云高级产品经理。
在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公共云服务提供商,或者两个私有云,或者多地域的边缘云。
新的形态导致基础设施的管理和应用治理的方式发生变化,传统的技术架构与管理方式增加了复杂性和风险,难以满足跨多个平台的应用服务部署和治理的挑战,代表业内最新理念的 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[1]) 的方式进行工作,方便灵活扩展,大大减轻运维复杂度和资源消耗。
Clusternet 架构上保证轻量化和精简,组件包括:
1、 clusternet-hub
组件 clusternet-hub 部署和运行在父集群中,通过 AA (Aggregated APIServer)的方式进行工作。
主要负责:
2、clusternet-agent
组件 clusternet-agent 部署在各个子集群中。
主要负责:
基于 Clusternet 轻量和灵活的架构,支持父集群自注册,Clusternet-hub 可向自身所在集群发布应用,该种方式最大化的利用父集群资源,并可以快速地扩展用户现有的集群,轻松具备管理海量公有云、私有云、边缘云集群的能力。
Clusternet 支持向不同集群分发和管理各种应用资源,包括原生 Kubernetes 各类资源(Deployment/StatefulSet/ConfigMap/Secret 等)、各类 CRD 资源,以及 HelmChart 应用等等。
下图是 Clusternet 的多集群应用分发模型,其中绿色的模块是需要用户去创建的,紫色的模块是 Clusternet 内部做流转的资源对象。Clusternet 提供了 kubectl 插件,可以通过 “kubectl clusternet apply” 命令来创建资源。
Clusternet 资源分发模型采用松耦合的设计,用户无须更改或重新编写已有的资源对象,仅需要额外定义分发策略 (Subscription)和差异化配置(Localization/Globalization)即可实现多集群的应用分发。
Clusternet 在项目设计之初,就全面兼容云原生生态。Clusternet 提供了多平台的版本支持,包括常见的 Linux 各平台,比如 x86,arm64,armv6,ppc64le,s390x。
Clusternet 还提供了 kubectl 插件 (kubectl-clusternet[2]),直接通过 kubectl 命令行进行操作,无需引入额外 CLI 工具,也无需切换 kubeconfig 的 context,即可进行多集群资源的创建、更新、编辑、删除、扩缩容等操作,方便兼容用户现有的 CICD 发布系统。
此外,Clusternet 还提供了对 client-go 的支持,完全兼容各版本的 client-go。Clusternet 通过 wrapperFunc 以无侵入的方式提供了 Clusternet 多集群对接能力。开发者可以参考文档指引[3],最快通过三行代码,就可在您的系统里实现多集群和应用管理能力。
Clusternet 支持云原生生态的软件和项目,从 v0.2.0 版本开始就支持对 Helm Charts 的多集群分发。基于 Clusternet 对任意 K8s 资源的原生支持,所有 K8s 生态的项目和软件都可通过 Clusternet 项目实现多集群能力。
注:kubectl-clusternet 即将添加成为 Kubectl 官方 plugin[4] ,详细信息参考 PR[5] ,未来可通过 “kubectl krew install clusternet” 一键安装该插件,现阶段可以先通过直接下载二进制文件的方式来使用。
Clusternet 是腾讯最新开源的多集群管理与应用治理项目,全新的架构设计遵循云原生理念,完全兼容原生 K8s 资源并扩展至多集群,支持用户快捷和低成本的对接 K8s 云原生生态,助力您的业务向未来分布式云的转型。
当前 Clusternet 仍在快速开发迭代中,即将发布 v0.4.0 版本,带来更多优秀的特性,欢迎大家持续关注。Clusternet 愿与各个领域的同仁一起,求实创新,砥砺前行,共同开创万物智联、虚实共生和全真互联的新时代。
Clusternet 项目开源进行时,欢迎关注 https://github.com/clusternet/clusternet 点赞支持。
我们正在限量召集 Clusternet 的第一批开源技术粉丝,只要你对 Clusternet 及相关技术感兴趣,都欢迎加入,参与方式:添加腾小云二维码,回复:clusternet,小云会拉你进群。
我们的开源技术粉丝将可以享受到以下特殊福利哦~
互动赢好礼
精读文章,填问卷赢T恤
诚挚感兴趣的开发者和合作伙伴一起参与 Clusternet 项目,点击链接参与Clusternet调查(https://wj.qq.com/s2/8949459/3f1f/) ,我们准备了 10 件腾讯定制技术范T恤给到填写问卷的同学,马上参与吧!活动截止到8月28日上午11点。
[1]
Aggregated APIServer: 【https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/】
[2]
kubectl-clusternet: 【https://github.com/clusternet/kubectl-clusternet】
[3]
文档指引:【 https://github.com/clusternet/clusternet/blob/main/examples/clientgo/READEME.md】
[4]
Kubectl 官方 plugin: 【https://krew.sigs.k8s.io/plugins/】
[5]
PR: 【https://github.com/kubernetes-sigs/krew-index/pull/1454】
往期精选推荐