7月17日,在Cloud Native Days China云原生多云多集群专场,华为云原生开源负责人王泽锋发表了《Karmada: 云原生多云容器编排平台》主题演讲,分享了在云原生多云多集群方面的思考与实践。
以下为演讲全文
根据最新的调查报告显示,超过93%的企业正同时使用多个云厂商的服务。云原生技术和云市场不断成熟,多云、多集群部署已经成为常态,未来将是编程式多云管理服务的时代。
云原生多云多集群的典型阶段
阶段一:一群孤岛
阶段二:威尼斯水城
阶段3:大航海时代
实例、数据、流量:
目前,从业界的产品和一些用户二次开发使用的进度来看,还处于从一群孤岛到威尼斯水城的过渡阶段,一些开源的软件和厂商的产品,大部分还是在做统一的集群生命周期管理与集群的目录,以方便快速的选择切换集群,外加集群的外部流量打通进行全局流量的分配等等。但像跨集群自动分配以及应用的跨集群等这些能力是缺失的。
现阶段,云原生多云多集群业务的编排也面临着诸多挑战:
1)集群繁多的重复劳动:运维工程师需要应对繁琐的集群配置、不同云厂商集群间的管理差异以及碎片化的API访问入口等问题;
2)业务过度分散的维护难题:应用在各集群的差异化配置繁琐;业务跨云访问以及集群间的应用同步难以管理。
3)集群的边界限制:应用的可用性受限于集群;资源调度、弹性伸缩受限于集群。
4)厂商绑定:业务部署的黏性问题,缺少自动化故障迁移;缺少中立的开源多云容器编排项目。
多集群容器编排的前世今生
Karmada:开源的云原生多云容器编排平台
上图为Karmada在开源社区技术全景图,Karmada将以模块化的方式提供应用多集群部署、高可用调度、故障迁移、多集群服务发现和流量治理、多云集群生命周期管理等能力集,并面向多种典型的用户场景预置策略集,让用户可以结合企业实际情况自由定制适合自身的多云平台。
Karmada重点会基于Kubernetes的原生API提供多集群应用管理的能力,帮助用户实现零代码改造甚至零yaml改造到多集群架构的迁移。在能力方面,我们主要帮助用户解决全网统一管理以及全网集群的统一管理,另外我们会内置典型的应用部署模型,包括两地三中心等。
Karmada 架构
Karmada通过独立的API 服务器(Karmada API Server)提供与其他组件进行通信的 REST 接口,包含Kubernetes原生API及Karmada扩展API,而Karmada 控制管理器根据用户创建的 API 对象执行操作, Karmada 调度器则实现应用在多集群中的调度。
Karmada核心概念
Resource Template
Propagation Policy
Resource Binding
Override Policy
Work
Karmada API workflow
Karmada内部工作流程
多集群应用部署
1)零改造 — 使用K8s原生API部署一个多集群应用
2)Propagation Policy: 可重用的应用多集群调度策略
resourceSelector
placement
clusterAffinity:
clusterTolerations:
spreadConstraints:
3)Override Policy: 跨集群可重用的差异化配置策略
resourceSelector
overriders
4)Member Cluster API: 用户自助可查的资源池基本单元
syncMode
secretRef
taints
kubernetesVersion, apiEnablements
resourceSummary
Karmada 社区路标
目前,我们已经实现了Q1与Q2规划的特性,最新发布的0.7版本提供了多集群东西向服务发现,多集群外部流量接入目前在研发当中。版本的发布我们是保持一个月一个版本的频率,以让用户快速使用。在Q4,我们计划重点集成业界已有的一些周边项目,并在今年完成整体技术栈的能力开发。
附:Karmada社区技术交流地址
项目地址:
https://github.com/karmada-io/karmada
Slack地址:
https://karmada-io.slack.com