Kubernetes多集群管理方案kubefed原理解析

1. kubefed简介

1.1 kubfed介绍

Kubefed(Federation v2)即 Kubernetes 联邦,是开源的多集群解决方案,目前的版本是 v0.8.1,处于beta阶段。Federation v1版本因为在扩展性、权限管理、架构等方便存在一定缺陷而被废弃。v2版本对v1版本架构进行了优化,使用CRD+operator的方式定义一系列自定义联邦资源,并通过自定义controller实现跨集群资源协调能力。

Kubefed可应用于突破单集群性能瓶颈、控制故障爆炸半径、异地多集群、混合云管理等场景,集群建立联邦后,可以将用户的k8s资源在多集群中分发并管理。

1.2 Kubfed组成

Kubfed控制面主要由三个自定义controller组成:

ClusterController: 集群控制器,用户通过kubefedctl join/unjoin 来加入/删除集群,当成功加入时,会建立一个 KubefedCluster 组件来储存集群相关信息,如 API Endpoint、CA Bundle 等。这些信息会被用在 KubeFed Controller 访问各 Kubernetes 集群,以确保能够建立 Kubernetes API 资源。并定时调用各集群的/healthz接口,维护可用集群列表,用于应用分发前的集群选择与过滤。

FederateTypeConfigController:联邦资源控制器,用于管理各集群间资源分发与状态监控。联邦资源控制器会为每种联邦资源类型创建一个资源分发控制器,和状态收集控制器,实现该类资源的联邦功能。StatusController和SyncController 都使用了FederatedInformer用来感知所有member cluster中某中联邦资源的变更。如果变更则从HostCluster中获取最新的资源定义同步到各memberCluster中。

SchedulerManage:调度控制器,用于创建适用于ReplicaSet和Deployment的RSPController,RSPController。当用户创建RSP资源后,RSP Controller 会收到通知,匹配对应 namespace/name 的 FederatedDeployment 与 FederatedReplicaSet 是否存在,若存在的话,会根据rsp中设定的策略计算出每个集群预期的副本数,之后覆写 Federated 资源中的 spec.overrides 内容以重新定义每个集群的副本数,最后再由 KubeFed Sync Controller 来同步至每个集群。

3 总结

Kubefed通过crd与自定义controller实现了对任意资源的联邦,并支持用户自定义调度策略,易于扩展和维护。

目前多集群管理除了kubefed项目还有华为推出的karmada、阿里和redhat推出的OCM(open cluster management)项目,相对于karmada部署资源时host cluster上必须要部署,kubefed可以选择不部署在host cluster,减少了控制面所在集群的负担,但在资源管理和资源调度上karmada比kubefed有优势。另外kubefed相对于ocm,联邦化资源会产生较多的crd,在维护各集群中crd的api版本增加了负担。因此需要用户根据实际使用场景选择合适的多集群管理方案。

4 参考资料

https://github.com/kubernetes-sigs/kubefed

https://github.com/kubernetes-sigs/kubefed/blob/master/docs/userguide.md

https://github.com/kubernetes-sigs/kubefed/issues/1284

https://techblog.cisco.com/blog/multi-cloud-fedv2/

https://blog.ihypo.net/15718231244282.html

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
Kubernetes多集群管理方案kubefed原理解析
Kubefed(Federation v2)即 Kubernetes 联邦,是开源的多集群解决方案,目前的版本是 v0.8.1,处于beta阶段。Federat...
<<上一篇
下一篇>>