【阅读原文】戳:阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供丰富的产品功能,在弹性、调度、可观测、成本治理、安全合规方面提供强大且成熟的产品能力,但如果您有IDC资源或者三方资源,无法短期迁移到阿里云容器服务ACK,又有弹性、调度、可观测、成本治理、安全等方面的痛点,可以考虑采用ACK One分布式云容器平台。
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
首先我们总结下分布式云容器领域企业面临的挑战, 对本地IDC自建集群,会出现IDC资源的确定性和业务流量不确定性的矛盾,业务高峰,IDC资源不足,在线业务受损,离线业务排队。业务低峰,IDC资源浪费。随着业务的发展,集群数量多,又来自不同的供应商,运维技术差异大,工作量大。另外,企业对高可用的要求提高,如何构建多集群应用容灾系统也是企业面临的难题。最后,对于分散在不同位置的服务器,边缘侧的服务器,GPU服务,如何通过K8s集群管理起来,统一中心和边缘的技术栈,也是一个难题。
通过分布式云容器平台ACK One可以快速构建分布式云原生基础设施,为了应对上述的挑战。ACK注册集群可以接入管理IDC自建集群和三方公有云集群。
ACK边缘集群可以接入并容器化管理IDC/ENS中的服务器,也可以管理位于工厂/门店等分散的服务器。
接入后,可以将云上的ECS/ECI接入IDC集群扩展弹性算力,进而使用ACK提供的弹性伸缩与智能调度,彻底解决IDC资源焦虑,降低综合成本。同时提供和ACK集群一致的运维体验,包括:云原生AI套件、运维、可观测、安全合规能力。
最后,ACK One多集群舰队,提供一个统一控制面管理多个K8s集群,提供应用分发、作业调度、流量管理、运维管理等能力。
这张图展示的是ACK One注册集群的架构,我们可以将三方公共云中的K8s集群和本地数据中心的自建K8s集群接入到ACK One注册集群中。
首先,您要有一个K8s集群,之后在K8s集群安装注册集群的agent pod,Agent pod会反向连接ACK One注册集群服务端并完成管控通道的建立。
之后,ACK One注册集群管控可以下发K8s API请求,并通过Agent pod的中转到自建K8s集群的API Server中。从而通过ACK One注册集群,可以获得ACK集群的扩展能力,包括:Prometheus监控、SLS日志、FinOps、备份中心、安全、Knative、针对AI场景的Kserve、数据加速Fluid、镜像加速能力、ASM服务网格能力。以上所有云上ACK集群具备的能力,都可以通过注册集群在三方公共云K8s集群和自建K8s集群中落地实现。
另外,为了应对本地IDC资源弹性不足,ACK One注册集群支持云上弹性,可以将云上的ECS/ECI计算资源,包括CPU和GPU资源,加入到自建K8s集群中,由自建K8s调度云上资源,应对业务流量增长。
可以说,您依然完全控制自建K8s集群,同时,获得了云上ACK集群才具有的强大扩展能力。
首先,通过注册集群,IDC K8s集群可以接入云上的ECS节点,也可以通过ACK Virtual Node接入Serverless ACS ECI算力。对云上ECS节点,支持自定义VM镜像,可以与IDC镜像完全兼容,同时支持自动弹性伸缩。
如果选择接入Serverless ACS ECI算力,可以支持极致的弹性,K8s Pod和ACS ECI实例一一对应,启动快,无需管理节点。另外,为了更容易的介入Serverless算力,可以不创建注册集群,直接安装ACK Virtual Node的Helm chart,让IDC集群快速获取ACS ECI算力。
通过ACK云上云下协作调度器,可以支持GPU共享调度,以提高GPU利用率,优先调度IDC资源,IDC资源不足时使用云上算力,业务高峰后优先缩容云上资源,以提高IDC资源利用率,降低成本。
通过注册集群,IDC自建集群可以弹性获取云上万核计算资源,彻底解决IDC资源焦虑,综合成本降低。
通过注册集群,可以将ACK集群的可观测能力(监控/日志/事件/告警),包括开箱即用的Grafana大盘下沉到自建K8s集成中, 一套可观测方案,同时用于容器服务ACK集群,自建K8s集群,三方公共云K8s集群,实现云上云下一致的可观测体验。在成本治理方面,容器服务ACK提供完整的方案,支持以集群,命名空间,节点池,应用多角度的成本洞察。
通过注册集群,可以使用ACK集群的成本洞察能力,降低自建K8s集群和三方公共云K8s集群成本。
通过注册集群,可以使用云上数据备份与恢复能力,备份自建K8s集群和第三方公共云K8s集群中的应用与数据, 并在ACK集群中恢复,实现跨地域的应用与数据容灾。支持无状态应用和有状态应用包含数据的备份和恢复。同时,支持丰富的备份策略和各种存储的实现。
另外,备份恢复可以实现应用迁移上云,通过overwrite配置填补多云之间的应用配置差异。
下面我们看下边缘集群的架构,上半部分是边缘集群ACK Edge的控制面,在阿里云上,复用ACK Pro Kubernetes集群控制面(APIServer/ETCD等),集成开源OpenYurt提供边缘节点自治,网络协同等能力。之后融合了阿里云的AI套件,云上弹性,可观测等能力。
下半部分是边缘部分,可以接入管理数据中心或者机房中的服务器,包括阿里边缘云ENS、IDC、跨地域的ECS和分布在工厂、场馆、园区中的服务器。
形成了云边协同一体化的架构。您可以在云上创建边缘集群,并将分散的服务器和设备接入云上集群,实现通过标准K8s集群容器化的方式调度使用这些服务器和设备,同时使用阿里云ACK Pro提供的各种扩展能力。
如果您在不同位置都自建集群管理这些服务器和设备,那么集群的数量会很多,维护成本很高。目前ACK Edge服务各行各业,包括:在线音视频的直播、云游戏、在线教育、物流等行业。
ACK Edge重点发力本地数据中心,如果您的数据中心有服务器,但不想自建kubernetes集群管理,节省人力成本。
可以使用ACK Edge集群来管理这些服务器,容器化运行您的核心业务。
为此ACK Edge构建了一系列的产品能力,云上沿用ACK Pro集群控制面,稳定性好;边缘自治,控制面网络异常不影响边缘数据面业务运行,同时支持紧急运维,控制面网络异常,依然可以修改本地业务pod ;云边混合弹性,业务高峰,可以扩容云上ECS;集成阿里云ACK的可观测能力,统一技术栈;云边流量复用,支持大规模边缘节点接入。
友邦保险:借助ACK Edge实现云边一体化管理,大幅度提升业务发布运维效率。与云上已有的监控、告警、日志等能力无缝对接,为业务的稳定运行提供保障。同时借助边缘自治,实现了在网络异常情况下的业务自愈、离线运维等能力。
随着AI应用的大规模应用,GPU卡出现局部紧张,很难在一个供应商获得足够的GPU卡。在AI应用开发运维的过程中,还会存在GPU利用率低、缺少可视化的界面、缺少监控、数据加载慢的问题。
通过边缘集群,可以管理分散的GPU算力,例如一个集群可以同时管理IDC和云上的GPU服务器,应对GPU资源不足的问题。可以在IDC中使用ACK云原生AI套件,提升AI工程效率,优化GPU使用率,加速镜像、模型和数据的加载。
有鹿:本地数据IDC中的GPU计算资源接入ACK Edge。借助云上AI套件的能力,大幅度提升GPU资源的利用率,与AI工程效率。同时,利用云上弹性ECS,应对大规模任务部署时本地资源不足的问题。
除了AI,ACK Edge可以管理边缘的HPC资源,支持Slurm调度,容器化方式运行HPC任务。
边缘集群支持underlay网络,提高网络性能30%,支持云上Serverless算力,云上云下的Pod和节点在一个网络平面,集群外部可以直接访问pod,适配大规模数据中心服务器的容器化管理,解锁更多业务场景。
首先我们看下多集群舰队的架构,多集群舰队集成使用开源Open Cluster Management,统一管理多个K8s集群, 可以是公共云的ACK集群,ACK Edge集群,本地数据中心K8s集群,和第三方公有云集群。
多集群舰队对用户提供统一的控制面,提供应用分发,作业调度,多集群Ingress网关,多集群service,全局可观测,和多集群组件管理能力。
ACK One多集群舰队全托管多集群应用发布系统,支持多集群GitOps与自定义分发规则的多集群应用资源分发,集成成本低,快速构建多集群应用发布平台。可以一键实现批量应用的全球多地域发布,发布效率成倍提升,保证业务快速迭代。支持一体化灰度、验证、回滚流程,保证发布质量。同时,可以快速将单集群应用转换为多集群部署,实现业务高可用。另外,支持多租实现多团队隔离。
最后,应用发布是全托管,免运维产品,针对大规模应用发布优化了控制面性能,支持数千应用的同时发布。
大模型训练、自动驾驶仿真等场景对计算资源的巨大需求量,正在突破单个云region或者IDC机房的服务能力上限。ACK One提供Fleet + Clusters两级调度系统,实现了跨集群任务统一调度。高效利用多地域计算资源,满足用户资源量、成本和性能等多方面优化诉求。
下面我们来看多集群流量管理,为了保证应用的容灾,我们一般会在不同可用区的2个集群部署相同的应用,并在前端部署负载均衡,传统的负载均衡一般会采用智能DNS的方案或者4层LoadBalancer方案,但DNS方案的问题在于客户端缓存,导致在问题发生时,切换不及时,造成业务损失。4层LoadBalancer无法实现基于7层的路由转发,灵活性差。
为了解决这个问题,我们推出多集群网关,提供全局Ingress,实现七层的负载均衡,多集群网关本身也支持跨可用区的高可用。因为是七层的网关,我们可以灵活的定制路由,实现基于权重,http header,自动fallback的路由策略。
通过多集群网关,我们可以实现应用同城多可用区多活容灾。
同时,舰队支持多集群Service,支持service的跨集群通信,方便实现微服跨集群迁移。
ACK One多集群舰队,支持多集群全局监控,同个一个监控大盘查看多个集群的状态与应用状态。支持全局FinOps,通过一个Finops大盘查看多个集群的成本情况,简化日常运维工作。
ACK组件数量多,随着版本的升级,配置的变更,叠加多集群部署,运维的复杂度高。ACK One即将发布多集群组件管理能力,通过组件基线定义多个组件版本,通过批次部署实现集群间灰度发布和异常回滚。运维人员可以通过多集群组件管理一键发布ACK组件,运维效率与质量大幅提升。
首先,我们来认识下开源Argo Workflow这个项目,它是CNCF的少数毕业项目之一,专为Kubernetes而设计,离线任务编排与运行引擎,适用于数据处理、科学计算、仿真计算、持续集成,是Kubernetes工作流的事实标准。
开源自建Argo工作流集群比较简单,但如果在生产环境中使用,往往会出现很多问题。
稳定性:节点中大量运行pod,会导致资源争抢,OOM,Disk满,导致频繁宕机。大规模工作流 pod运行,复杂工作流的运行,往往导致K8s API Server,Argo controller异常。
成本与规模:固定资源池无法成本分摊,大规模工作流无法正常运行。
安全与运维:版本迭代,升级新版本引入新问题,需要额外设计登录,鉴权,CVE修复等安全问题。
开源自建Argo不支持生产环境大规模工作流运行。
看下全托管Serverless Argo工作流集群的架构,它托管开源Argo workflow,保证现有开源自建Argo工作流系统可无缝迁移。
同时,可以使用工作流集群的API SDK接口,包装工作流集群,构建自己的工作流提交系统,以适应具体的业务场景。我们很多仿真,自动驾驶,科学计算客户就是将工作流集群作为后端引擎使用。支持事件驱动编程模型,支持Git、阿里云OSS、MNS、Function/EventBridge等触发工作流自动运行,自动完成CI、数据处理等离线任务。
分布式Argo工作流集群使用Serverless方式运行工作流,无需运维worker节点,利用云上极致算力资源,可实现同时运行数万Pod的大规模工作流。
对比开源自建,全托管Serverless Argo工作流在易用性、运行效率、成本、稳定性,高性能大规模方面大幅领先,同时,提供7*24的产品售后支持。
例如:及时修复稳定性与性能问题,单工作流并行2万子任务Pod,整体4万子任务Pod稳定运行,对比开源提高10倍。以Serverless方式运行子任务pod,利用云上极致的弹性应对业务高峰,同时无需预留维护节点,对比开源成本下降30%。
深势科技使用全托管Serverless Argo工作流集群,编排科学计算任务,使用数万核资源运行大规模工作流,系统稳定性大幅提高。
目前Argo工作流集群在多个行业大量应用,包括:自动驾驶方针、科学计算、基因计算金融分析、数字媒体。
最后,我们简单总结下今天的分享:
分布式云面对的场景多种多样,挑战很多,为此,ACK One提供注册集群能力,可以将非ACK集群接入ACK One,从而实现云上云下集群统一管理,和云上弹性。ACK One提供边缘集群,实现云上集群管理IDC的服务器,支持边缘自治,协同AI。多集群舰队提供多集群GitOps,应用资源分发,运维管理,轻松完成多集群管理。全托管Argo工作流集群,实现工作流的编排,以Serverless方式运行工作流,降低成本,应对持续集成、科学计算、仿真计算、数据处理等场景。
大家可以根据具体业务场景选择相应的能力,最终实现简单的跨云协同,让业务管理更加高效。
阿里云容器团队诚招【开发&SRE】【产品经理】【PDSA】- 杭州、北京、深圳的岗位均可,欢迎大家帮助推荐。
我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。
获取关于我们的更多信息~