关于k8s-operator:K8s-多集群实践思考和探索
作者:vivo 互联网容器团队 - Zhang Rong本文次要讲述了一些对于K8s多集群治理的思考,包含为什么须要多集群、多集群的劣势以及现有的一些基于Kubernetes衍生出的多集群治理架构实际。 一、为什么须要多集群随着K8s和云原生技术的疾速倒退,以及各大厂商在本人的数据中心应用K8s的API进行容器化利用编排和治理,让利用交付自身变得越来越标准化和统一化,并且实现了与底层基础设施的齐全解耦,为多集群和混合云提供了一个松软技术根底。谈到多集群多云的数据中心基础架构,会想到为什么企业须要多集群? 1.单集群容量限度: 集群下限5000个节点和15万个Pod。同时单集群的最大节点数不是一个确定值,其受到集群部署形式和业务应用集群资源的形式的影响。 2.多云混合应用: 防止被单家供应商锁定,不同集群的最新技术布局,或是出于老本等思考,企业抉择了多云架构。 3.业务流量突发: 失常状况下用户应用本人的 IDC 集群提供服务,当应答突发大流量时,迅速将利用扩容到云上集群独特提供服务,需具备私有云 IaaS接入,能够主动扩缩容计算节点,将私有云作为备用资源池。该模式个别针对无状态的服务,能够疾速弹性扩大,次要针对应用 CPU、内存较为密集的服务,如搜寻、查问、计算等类型的服务。 4.业务高可用: 单集群无奈应答网络故障或者数据中心故障导致的服务的不可用。通常次要服务的集群为一个,另一个集群周期性备份。或者一个集群次要负责读写,其余备份集群只读,在主集群所在的云呈现问题时能够疾速切换到备份集群。该模式可用于数据量较大的存储服务,如部署一个高可用的mysql集群,一个集群负责读写,其余2个集群备份只读,能够主动切换主备。 5.异地多活: 数据是实时同步的,多集群都能够同时读写,这种模式通常针对极其重要的数据,如全局对立的用户账号信息等。 6.地区亲和性: 只管国内互联网始终在提速,然而处于带宽老本的考量,同一调用链的服务网络间隔越近越好。服务的主和谐被调部署在同一个地区内可能无效缩小带宽老本;并且分而治之的形式让应用服务本区域的业务,也能无效缓解应用服务的压力。 二、多集群摸索2.1 社区在多集群上的摸索以后基于 K8s 多集群我的项目如下: 1.Federation v1: 曾经被社区废除,次要起因在于 v1 的设计试图在 K8s 之上又构建一层 Federation API,间接屏蔽掉了曾经获得宽泛共识的 K8s API ,这与云原生社区的倒退理念是相悖。 2.Federation v2: 曾经被社区废除,提供了一个能够将任何 K8s API type 转换成有多集群概念的 federated type 的办法,以及一个对应的控制器以便推送这些 federated 对象 (Object)。而它并不像 V1 一样关怀简单的推送策略(V1 的 Federation Scheduler),只负责把这些 Object 散发到用户当时定义的集群去。这也就意味着 Federation v2 的次要设计指标,其实是向多集群推送 RBAC,policy 等集群配置信息。 3.Karmada: 参考Kubernetes Federation v2 外围实际,并融入了泛滥新技术,包含 Kubernetes 原生 API 反对、多层级高可用部署、多集群主动故障迁徙、多集群利用主动伸缩、多集群服务发现等,并且提供原生 Kubernetes 平滑演进门路。 ...