首页 > 其他分享 >KubeFed架构设计

KubeFed架构设计

时间:2023-01-25 11:57:08浏览次数:28  
标签:架构设计 Kubernetes API 集群 联邦 kubefed KubeFed

KubeFed(Kubernetes Cluster Federation,Kubernetes集群联邦)是Kubernetes项目下的多集群特殊兴趣小组(Special Interest Group,SIG)发布和管理的。集群联邦实现了单一集群统一管理多个Kubernetes集群的机制,这些集群可能是不同公有云厂商的云平台下创建的集群,也可能是数据中心内部自建的集群。集群联邦解决的最主要的使用场景就是将应用的部署扩展到多集群环境中,用户可以在被称为Hosting Cluster的主集群中统一配置并管理其他成员集群(包括主集群自身)。

集群联邦经历了两个版本的迭代,第1版由Kubernetes项目核心团队维护,跟随Kubernetes 1.5发布,在迭代至Kubernetes 1.8时转交给多集群特殊兴趣小组。第1版集群联邦的整体架构与Kubernetes类似,如下所示,在被管理的成员集群上层引入用于接收创建多集群工作负载请求的联邦API服务器(Federation API Server)和用于将对应的多集群工作负载下发给成员集群的联邦控制管理器(Federation Controller Manager)。

 

集群联邦第1版架构

在API层面,联邦资源的调度通过添加注解(annotation)实现,最大限度地兼容原有Kubernetes API。这样做的好处是可以复用现有的代码,用户已有的部署文件不需要做太大改动即可迁移。但这也制约了集群联邦的进一步发展,使之无法很好地对API进行演进。对于每一种联邦资源,需要有对应的控制器实现多集群调度,所以早期的集群联邦只支持有限的几种资源类型。

集群联邦方案的资源设计非常不灵活,基于角色的访问控制(RBAC)策略的支持也存在诸多问题,导致其无法做到多集群资源的权限管理。多集群特殊兴趣小组意识到这种设计与Kubernetes主要发行版中的配置管理方式不符,且在设计上存在很多缺陷,所以在Kubernetes 1.11之后开发了新的版本,也就是现在的KubeFed项目。

与第1版相比,第2版最大的变化就是移除了联邦API服务器,并且利用Kubernetes的自定义资源定义(CRD)机制实现了集群联邦的整体功能,架构如下所示。部署KubeFed后可以看到两个组件:kubefed-controller-manager和kubefed-admission-webhook。kubefed-controller-manager组件负责处理自定义资源以及协调被管理集群之间的状态,kubefed-admission-webhook组件则提供了准入机制。

 

KubeFed架构

可以看到一个主集群(Host Cluster)和多个成员集群(Member Cluster),主集群可以是成员集群并且运行具体的工作负载,也可以只作为管控集群。

在Kubernetes集群联邦第2版的处理逻辑中,通过ClusterConfiguration声明了哪些Kubernetes集群纳入联邦,通过TypeConfiguration声明了哪些Kubernetes API资源用于联邦管理。TypeConfiguration又包括Template、Placement和Overrides几种类型定义。Template用于定义跨集群资源通用的表示形式,Placement用于定义资源应用于哪些集群,Overrides用于定义对集群中哪些字段进行更新、覆盖。FederatedDeployment资源中关于Template、Placement和Overrides的定义如下所示。

apiVersion: types.kubefed.k8s.io/v1beta1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-namespace
spec:
  template: # 定义Deployment的所有内容,可以理解为Deployment与Pod之间的关联
    metadata:
      labels:
        app: nginx
    spec:
      ...
  placement:
    clusters:
    - name: cluster2
    - name: cluster1
  overrides:
  - clusterName: cluster2
    clusterOverrides:
    - path: spec.replicas
      value: 5

KubeFed集群联邦管理相关能力的实践,使用的版本为KubeFed 0.5.0,要求Kubernetes版本不低于1.13、Helm版本不低于3.2。

标签:架构设计,Kubernetes,API,集群,联邦,kubefed,KubeFed
From: https://www.cnblogs.com/muzinan110/p/17066811.html

相关文章

  • Argo CD核心概念及架构设计
    ArgoCD的核心概念Application(应用):一组Kubernetes资源清单的统一定义,属于CRD(CustomResourceDefinition,定制资源定义)资源。Applicationsourcetype(应用的源仓库类型):目......
  • KubeFed集群注册
    下面将cluster01和cluster02这两个成员集群注册至KubeFed,需要先下载和安装kubefedctlCLI。$curl-LOhttps://github.com/kubernetes-sigs/kubefed/releases/download/v......
  • Helm Chart部署KubeFed
    选择cluster01作为KubeFed的主集群,将cluster02作为成员集群加入集群联邦。首先,需要在主集群中安装并部署KubeFed,使用HelmChart进行部署,需要安装Helm3客户端,命令如下。$......
  • Dubbo架构设计详解
    摘要:这篇文章,详细的介绍了Dubbo的架构设计。Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松......
  • 【架构设计】你真的理解软件设计中的SOLID原则吗?
    前言在软件架构设计领域,有一个大名鼎鼎的设计原则——SOLID原则,它是由由RobertC.Martin(也称为UncleBob)提出的,指导我们写出可维护、可以测试、高扩展、高内聚、低耦合......
  • 基于AWS云SaaS多租户架构设计
    基于AWS云SaaS多租户架构设计租户与用户概念单租户与多租户多租户的好处采用多租户架构方法将为你的SaaS应用程序带来广泛的有价值的好处。让我们来看看下面的贡献。a)......
  • 小程序用户登录架构设计
      1.背景上一篇文章《小程序静默登录方案设计》提到过,小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。即......
  • 工作流引擎架构设计
    原文链接:工作流引擎架构设计最近开发的安全管理平台新增了很多工单申请流程需求,比如加白申请,开通申请等等。最开始的两个需求,为了方便,也没多想,就直接开发了对应的业务代......
  • B站万亿级数据库选型与架构设计实践
    分享概要一、业务场景二、架构演进三、架构设计四、稳定性五、效率 一、业务场景 在开始讲解之前,我先为大家介绍一下B站的业务场景......
  • B站万亿级数据库选型与架构设计实践
    分享概要一、业务场景二、架构演进三、架构设计四、稳定性五、效率 一、业务场景 在开始讲解之前,我先为大家介绍一下B站的业务场景......