解读Karmada多云容器编排技术,加速分布式云原生应用升级
本文分享自来源:《华为云DTSE》第五期开源专刊,作者:任洪彩 华为云高级软件工程师,Karmada社区Maintainer。
管理和协调跨多个云平台的容器化应用是当前企业面临的复杂性挑战之一,Karmada多云容器编排技术使得用户能够像操作单一集群一样轻松管理多集群,简化了多云环境的运维复杂度,加速分布式云原生应用升级。
行业背景
随着云计算技术的飞速发展,企业对于云基础设施的需求日益多样化,多云策略成为了众多企业的首选。多云环境不仅能够提高业务的灵活性和可用性,还能有效降低对单一云服务商的依赖风险。根据最新的调查报告显示,超过87%的企业正在使用多个云厂商的服务,然而,随之而来的是管理和协调跨多个云平台的容器化应用的复杂性挑战。
业界流行的容器编排工具Kubernetes(简称K8s),虽然在单一集群内展现了强大的资源管理和自动化部署能力,但在面对多云场景时,其跨集群的资源调度、统一管理以及数据一致性等问题成为了亟待解决的痛点。
现阶段,云原生多云多集群业务的编排面临着诸多挑战:
-
集群繁多的重复劳动:运维工程师需要应对繁琐的集群配置、不同云厂商集群间的管理差异以及碎片化的API访问入口等问题。
-
业务过度分散的维护难题:应用在各集群的差异化配置繁琐;业务跨云访问以及集群间的应用同步难以管理。
-
集群的边界限制:应用的可用性受限于集群;资源调度、弹性伸缩受限于集群。
-
厂商绑定:业务部署的黏性问题,缺少自动化故障迁移;缺少中立的开源多云容器编排项目。
Karmada多云容器编排引擎,简化多云环境管理复杂度
为了解决上述挑战,华为于2021年正式推出了开源项目Karmada,旨在打造一个云原生的多云容器编排平台。Karmada(Kubernetes Armada,舰队之意)继承并超越了社区Federation v1和v2(kubefed)的设计理念,它不是简单地在不同集群间复制资源,而是通过一套全新的API和控制面组件,实现了在保持Kubernetes原有资源定义API不变的前提下,无缝地在多云环境中部署和管理分布式工作负载。
Karmada提供了一个全局的控制面板,使得用户能够像操作单一集群一样管理多云上的Kubernetes集群,简化了多云环境的运维复杂度,引入了高级的跨集群调度策略,根据资源需求、成本、合规性等因素,自动将工作负载优化部署到最适合的云平台或区域。通过分布式数据管理和同步机制,确保多云间的数据和配置一致性,降低了数据管理的复杂度。
实践案例:Karmada在工业智能检测领域的应用
工业智能检测领域亟需标准化智能检测提升效率
在液晶面板生产领域,由于多种因素,产品常出现不良品。为此,关键工艺节点后引入了自动光学检测(AOI)设备,通过光学原理检测常见缺陷。然而,现有 AOI 设备仅识别缺陷有无,需要人工分类和识别缺陷,这一过程耗时且影响生产效率。数之联的客户企业,某面板龙头企业,引入自动缺陷分类系统(ADC)以提高判定准确性并减轻劳动强度,使用深度学习技术自动分类 AOI 输出的缺陷图片,并筛除误判,从而提高生产效率。
客户企业率先在一个工厂引入 ADC,后续在其他工厂推广,节省人力资源,提高判定效率。尽管如此,由于工艺复杂和供应商差异,现场建设呈现出割裂和分散管理的趋势,给数据共享和运维带来困难。为解决这些问题,客户企业启动了工业智能检测平台的建设,该平台利用人工智能技术,实现标准化智能检测并提高生产效率和良率。
工业智能检测平台
工业智能检测平台将 ADC 作为核心,扩展至模型训练和检测复判,实现“云”(管理+训练)+“边”(推理)+“端”(业务)的一体化方案,旨在通过标准化平台提高生产质量和数据价值。建设范围包括资源共享中心、现地训练和边侧推理等子平台,将在若干工厂实施。
工业智能检测平台架构图
项目目标是实现现地 ADC 上线、资源共享和云边端标准化,以减轻运维负荷、提升标准。工业智能检测平台旨在通过规范化和标准化客户企业全集团的 ADC 系统,为后续 ADC 建设提供样本和模板,降低成本和周期,提高生产和质检效率以及产品良率。平台包含系统管理员、资源配置员等用户角色,并涉及 ADC 推理、模型训练、数据共享等信息流,以及云端协同功能,确保 ADC 的自动缺陷分类生产过程,并提高模型和缺陷图片的利用率。
结合Karmada多集群管理构建解决方案
一、集群管理:多地域集群统一纳管
不同地域的 K8s 集群注册至中心云系统,中心云系统对多个现地的集群进行管理。
二、应用管理:全局统一部署、监控
通过 Karmada提供的集群统一访问能力,用户在中心云实现可视化大屏等需要聚合成员集群的数据的功能。
1、集群监控
针对在线的集群,中心云系统可对内存、CPU、磁盘、网络流入流出速率、GPU、日志等指标进行监控数据展示,并可切换集群进行数据查看。
资源监控
中心云可以看到和训练云相同的监控,通过 Karmada 聚合层 API 由集群的 Java 程序对 PromQL 封装后提供给前端页面。
2、中心云数据下发
用户在中心云上传的数据,可自由选择下发至指定现地,包括数据集、标注、算子工程、算子镜像以及模型等。
数据集、算子工程、模型,通常是文件,在完成传输后,会保存到本地或NAS等存储中。标注,通常是结构化数据,在完成传输后,会保存到 DB 中。算子镜像,一般导出为 tar 包,在完成传输后,会推送到当前集群的 harbor 中。 中心云除了 Karmada 的控制面以外,也带有自己的业务 K8s 集群,也包括存储,因此可以作为一个中转器。以上均通过 Karmada 的聚合层 API 来调用我们提供的文件上传到 svc,实现了集群和集群之间的调用。
3、跨现地训练
针对某现地训练资源不足的情况下,可通过申请其他现地资源的方式,进行跨现地训练。该功能实现方式为将 A 现地训练所需要的数据集、标注、算子工程、算子镜像等数据发送至 B 现地,通过 B 现地的资源进行训练。再将训练好的模型返回给 A 现地。
原理和中心云数据下发类似,任务所需的数据会直接发送到对应集群,体现了成员集群和成员集群之间的调用关系。
4、可视化大屏
根据中心云注册的现地,统计不同现地的各类指标数据进行大屏展示。在这类大屏中展示实时数据的时候,通过 Karmada 聚合层 API,我们可以方便地直接调用成员集群的 svc,而无需让所有的数据显示都走大数据的离线分析、实时分析,提供更高的时效性。
总结展望
Karmada项目自2021年开源并加入云原生计算基金会(CNCF)成为沙箱项目以来,已经取得了显著的发展与认可。项目于2023年底正式晋升为CNCF的孵化级别项目。这一成就标志着Karmada技术生态获得全球业界的广泛认可,进一步巩固了其在分布式云原生技术领域的领先地位。该项目凭借其创新的多云多集群容器编排能力,已被全球范围内超过30家知名企业所采纳用于构建企业级云原生平台。
Karmada的出现,为多云时代的企业提供了一个强大且灵活的容器编排解决方案,它不仅解决了多云管理的痛点,还为企业在云原生旅程中探索更广阔的应用场景提供了坚实的技术支撑。随着云原生技术的不断演进,Karmada有望成为连接和简化多云生态的关键力量,助力企业释放云的全部潜能,加速数字化转型的进程。