共计 3560 个字符,预计需要花费 9 分钟才能阅读完成。
作者
徐迪,腾讯云容器技术专家。
汝英哲,腾讯云高级产品经理。
摘要
在过来的数年里,云计算畛域经验了屡次微小的改革,以后越来越多的组织 将利用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公共云服务提供商,或者两个公有云,或者多地区的边缘云。
新的状态导致基础设施的治理和利用治理的形式发生变化,传统的技术架构与治理形式减少了复杂性和危险,难以满足跨多个平台的应用服务部署和治理的挑战,代表业内 最新理念的 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 及相干技术感兴趣,都欢送退出,参加形式:关注 - 公 - 众 - 号:【腾讯云原生】,增加小助手进群。
咱们的开源技术粉丝将能够享受到以下非凡福利哦~
1、专属开源技术粉丝交换群
2、与我的项目作者、业内专家等间接交换
3、更多社区活动和福利等你来加入
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!