当前位置: 首页 > 网络应用技术

Kubernetes已成为云元素时代的Android,这足够了吗?

时间:2023-03-08 17:32:57 网络应用技术

  简介:在云时代,Kubernetes和云基础架构太复杂了。如果用户需要学习许多基本细节,则应用程序管理的成本很高,易于犯错,并且经常出现故障。随着云计算的普及,不同的云具有不同的细节,这进一步加剧了上述问题。

  本文将介绍如何在Kubernetes上构建新的应用程序管理平台,提供一层抽象来封装基础逻辑,并仅显示用户关心的接口。用户只能关注他们的业务逻辑,管理应用程序更快,更安全。

  Yun的时代是一个非常好的时代。我们面临着整体技术的颠覆性创新,全面纠正了应用程序的应用。在目前,Yunyun在演变过程中拥有三个关键技术:

  这三个关键技术实际上正在逐渐发展。此外,在申请交付领域,也有相应的理论随着上述技术的不断发展。云的兴起带来了跨越媒体,基础架构管理,操作和维护模型的全面升级和突破,以及连续交付理论,加速了云计算时代的出现。

  图1云本地技术全景地图

  从CNCF发布的云本机技术的全景(见图1),您可以看到云的剧烈生态。该图中的900 +徽标,其中许多是开源项目,初创企业和未来的云本地技术,将在这些地方诞生。

  大数据,AI和区块链等新技术的应用可以在kubernetes.kubernetes上部署,已成为一种现实的“操作系统”。它在移动设备中是云的本地。Android不仅安装在我们的手机上,而且还进一步渗透到诸如汽车,电视,TMALL ELF等智能终端中。移动应用程序可以通过Android.Kubernetes在这些设备上运行,还具有这种潜在或开发趋势。当然,它不会出现在智能家用电器中,而是出现在各种公共云中,自行车的机房和边缘群集。期望Kubernetes将来会像Android一样无处不在。

  因此,在kubernetes交付后,容器 + kubernetes界面可以解决所有交付问题吗?答案绝对不是。构想,如果我们在手机中只有一个Android系统,它可以满足我们的工作和生活需求吗?除了Kubernetes的“操作系统”之外,还需要一组用于交付的应用程序,还需要一组用于交付的应用程序。在移动电话中,可以通过“ PEA PODS这样的应用程序安装软件应用程序),它还需要一组用于交付的应用程序。”。在云时代,我们还需要将应用程序部署到不同的Kubernetes群集。但是,由于Kubernetes拥有大量琐碎的设施和复杂的操作语言,因此在部署过程中将遇到各种问题。在此TimePlatform处,以阻止交付的复杂性。

  应用程序管理平台在行业中具有两个主流模型。首先是传统平台模型。在kubernetes上,“遮盖大帽子”以阻止所有复杂性。无法满足越来越多的应用程序管理需求。

  另一个解决方案是容器平台模式。该模型相对多云。组件是开放的,具有强大的可伸缩性。但是,它缺乏应用程序层的抽象,并且导致了许多问题,例如开发人员的学习路线很陡峭。例如,当企业开发人员将代码提交应用程序平台时,他需要编写部署部署应用程序,编写Prometheus规则配置监视,编写HPA设置弹性望远镜,编写ISTIO规则控制路由等。这些不是这样做的业务发展。

  因此,无论哪种解决方案,都有优势和缺点,需要选择。因此,如何封装平台的复杂性并具有良好的可扩展性?这就是我们一直在探索的内容。

  2012年,阿里巴巴开始了一项与容器化相关的调查。首先,主要是为了提高资源利用率并开始了自我研究容器虚拟化技术的道路。随着响应促销的机器资源数量的增加,2015年,容器的混合云弹性架构开始使用阿里巴巴云的公共云计算资源来支持交通促进的峰值。这也是阿里巴巴进行云的早期阶段。

  在2018年转弯之后,在阿里巴巴的基本安排采用开源Kubernetes之后,我们从面向虚拟机的脚本安装部署模式转变为基于标准容器的调度系统部署应用程序。标准和统一,每个人都“在政治上”。

  因此,在2019年,我们与Microsoft手中释放了开放式应用模型-OAM(开放式应用程序模型),并开始进行OAM平台转换。一切都相对平滑。2020年,OAM实施引擎Kubevela是正式开放的,它促进了基于OAM和Kubevela的多组应用程序管理平台。它还促进了三个In -In -In -In -In策略,不仅在内部使用此技术,阿里巴巴,但在商业云产品面对客户和开源时也使用相同的技术。通过完全拥抱开源,整个OAM和Kubevela社区都参与了CO -Construction。在此探索过程中,我们已经采取了很多弯路并积累了很多坑。接下来,我们将详细介绍它。同时,分享Kubevela的设计原理和使用方法,以帮助开发人员了解云本机应用程序管理平台的完整性。解决应用程序开发人员的使用经验和应用程序交付效率的解决方案。

  在探索云本机应用程序管理平台解决方案的过程中,我们主要遇到了4个主要挑战,并总结了4个基本原则。以下将一一介绍。

  挑战1:不同方案的应用程序平台接口并不统一,并且重复构造。

  尽管Yun是Kubernetes系统的本地,但它将在不同的情况下构建不同的应用程序平台,并且界面完全均匀,交付功能存在很大差异。不同的服务平台。当时,当构建应用程序管理平台时,它是不可避免地要重复开发,重复操作和维护。理想的情况当然是重复使用的,但是操作和维护平台体系结构模式是不同的,也无法实现互操作性。此外,当业务开发人员交付到不同的方案,连接的API完全不同,并且在交付功能上存在很大差异。这是我们遇到的第一个挑战。

  挑战2:“面对国家的尽头”无法满足交付过程。

  在云时代,面对最终状态的设计非常受欢迎,因为它可以减少用户对实施过程的关注。用户只需要描述他们想要的东西,系统就可以自动做事。使用过程,通常需要批准交付过程,暂停观察,调整等。例如,在交付过程中,我们的Kubernetes系统处于强大管理状态,有必要批准和释放。显然,“在线更改,以前的X在线生产环境批次应显然超过“ Ali Group Change Manchance管理规范”的Y分钟。灰色。“因此,应用程序交付是一个以过程为导向的,而不是最终的执行过程。我们必须考虑如何使其更好地适应该过程的更好的AdaptationProcess。

  挑战3:平台容量的复杂性太高。

  如上所述,在传统模型下,应用程序平台的扩展很差,因此在云时代,公共扩展平台的机制是什么?在Kubernetes系统中,您可以直接使用模板和其他模板语言来部署,但是缺点是灵活性不足。整个模板很复杂且难以进行大规模维护。有些大师可能会说:“我可以自定义一组Kubernetes控制器,这一定很好!”是的,但是了解Kubernetes和CRD扩展机制的人更少。例如,您需要编译并将其安装在Kubernetes上。此外,控制器的数量不能像这样肿胀。因此,成为一个高度可扩展的应用程序平台面临巨大的挑战。

  挑战4:不同的环境和不同的情况是交付的巨大差异。

  在申请交付过程中,不同用途的操作和维护能力特别不同。包装,行走镜像部署,同时部署按需开发人员的需求创建的独立环境。另一个例子是预发行的联合环境,每天的运输要求对进攻和防御练习和注射注射。生产环境,您需要加入生产安全和服务高可用性的操作和维护能力。此外,同一应用和组件存在巨大差异。数据库,负载平衡和存储空间有很多差异。不同的云中有很多差异。

  为了应对以上四个挑战,我们总结了现代应用程序管理平台的四个核心设计原则:

  1.与基础架构无关的统一开放应用模型。

  2.宣言工作流程。

  3.高度可伸缩性,易于编程。

  4.设计混合环境。

  原理1:具有不合理基础架构的统一开放式应用模型。

  如何完善与基础架构无关的统一开放应用模型?以开放式应用程序模型为例。首先,它的设计非常简单,它可以极大地简化我们对管理平台的使用:原始用户希望面对数百个API,OAM将其抽象成4种交货模型。第二,OAM描述了要组件是从业务开发人员的角度交付,平台开发人员将提供运营和维护功能以及要使用的交付策略,以提供操作和维护功能和交付策略。ESSENCETHORGH组件模型可用于描述容器,虚拟机,虚拟机,,云服务,Terraform组件,头盔和其他产品。

  图2通过开放申请模型描述的申请交付示例

  如图2所示,这是OAM描述的Kubevela应用程序交付示例,其中包含上述4个模型。首先描述应用程序部署中包含的组件(组件),通常是以镜像的形式,乘积的形式袋子,云服务等;容量规则的自动扩展等,操作和维护功能正作用于组件;同样,这是交付策略,例如集群分配策略,健康检查策略,防火墙规则等。阶段声明和执行;最后,工作流程(工作流)的定义,例如蓝绿色部署,逐渐部署,包括流量,手动批准和其他管道连续交付策略。

  原理2:围绕工作流程发表声明。

  以上4个模型的核心是工作流程。申请交付本质上是一种安排。定义了组件,操作和维护功能,交付策略,工作流步骤等,以便具有无环图DAG。

  图3 Kubevela的示例通过工作流安排应用程序提供

  例如,申请交付之前的第一步,例如通过交付策略描述并在交付开始时执行的安装系统部署依赖项,初始化检查等;您可以通过组件创建相关的云资源,或者您可以引用现有数据库资源,以将数据库连接字符串注入环境参数中;第三步是使用组件部署应用程序本身,包括镜像版本,开放端口等;第四步是应用程序的应用程序和维护功能,例如设置监视方法,弹性望远镜策略,平衡负载, ETC。;第五步是在在线环境中插入人造审核,检查应用程序的启动是否存在问题,然后在手动确认确认后继续放弃。工作流程下降;第六步是平行部署其余资源,然后通过指甲的新闻回电,告诉开发人员到部署的新闻。这是我们在真实场景中的交付过程。

  该工作流程的最大价值是它通过标准化程序描述了向不同环境交付的复杂,差异的过程。

  原理3:高度可扩展且易于编程。

  我们一直希望我们可以构建一个像乐高积木这样的应用程序模块,并且平台开发人员可以使用平台的业务开发轻松扩展应用程序平台。不足,Kubernetes控制器太复杂了,并且具有高专业能力来开发开发人员。我们如何具有很高的可扩展性和编程灵活性?我们终于从Google Borg的Culang借来了,它是一种适合数据模板和数据的配置语言传输。它自然适合调用GO语言,它易于与Kubernetes生态系统集成并且具有很高的灵活性。Culang是一种动态的配置语言。无需编译和发布它。响应速度很快。只要将规则发布给Kubernetes,它将立即生效。

  图4 Kubevela动态扩展机制

  以Kubevela的动态扩展机制为例,平台开发人员已经编译了组件模板,例如Web服务,时机任务以及操作和维护模板,例如Elastic Telescopic,滚动升级,并将这些容量模板注册到相应的invironment.kubevela.kubevela.kubevela上已安装在上面根据容量模板内容,相应环境的群集。这次,应用程序开发人员可以使用平台开发人员仅编写的模板。他通过选择组件,操作和维护功能来选择应用程序YAML,然后在Kubevela Control Surface上发布YAML。Kubevela通过应用程序YAML安排应用程序,运行相应的选定容量模板,并最终将应用程序发布到Kubernetes cluster.the kubernetes cluster.the.the kubernetes cluster.the。从定义和申请描述到最终交货过程的过程已完成。

  原理4:为混合环境设计。

  在Kubevela设计的开头,我们认为未来可以应用于混合环境(混合云/云/分布式云/边缘),并且不同环境和不同方案的交付很大。我们做了两件事。首先,Kubevela的控制平面是完全独立的,并且不会侵入业务集群。您可以在业务集群中使用社区的任何Kubernetes插件操作和管理应用程序。Kubevela负责控制这些插头的飞机管理和操作。通过集成多个范围的群集管理解决方案,例如OCM/Karmada。在中央管理和控制,异构网络,Kubevela可以实现安全群集治理,环境差异配置以及多人配置的能力,来支持单个集群。- 集群灰度释放。

  以阿里巴巴云的内部边缘计算产品的解决方案为例,开发人员只需要直接将编译的镜像图像和kubevela文件发布到Kubevela控制平面,而控制平面将应用程序组件分配到中央保管集群。边缘群集可以采用边缘群集管理解决方案,例如opentyurt.bbubevela是一个由多个群集组成的统一控制平面,它可以实现应用程序组件的统一编译,云边缘群集之间的差异以及所有监视信息的所有监视信息基础层以实现统一观察和绘制跨群集资源拓扑的目的。

  通常,可以简单地包括上述4个Kubevela的核心设计原理:

  1.基于OAM抽象基础架构的底部细节,用户只需要关心4个交付模型即可。

  2.关注工作流的说明,工作流不需要额外的过程或容器,并且交付过程是标准化的。

  3.高度可伸缩性和简单编程:用提示语言对操作和维护逻辑进行了编码,该语言比模板语言更灵活,该模板语言比控制器更简单。

  4.混合环境的设计,提供环境和围绕应用程序集群的概念抽象,并统一控制所有应用程序(包括云服务等)。

  图5 Kubevela在阿里巴巴云的本地基础架构中的位置

  目前,Kubevela已成为Alibaba Cloud的本地基础架构的一部分。从图5可以看出,我们对Kubernetes进行了许多扩展,包括资源池,节点和集群管理功能,我们也使很多人都做到了很多。支持工作负载和自动化操作和维护功能。Kubevela已对这些功能进行了统一的申请交付和管理,以便小组业务可以应用不同的方案。

  将来的主要Yunyun会如何发展?回顾过去十年来云的发展,不可逆转的趋势是,标准化的界面继续向上移动。为什么?从2010年左右的云计算的出现到Footholds,云的计算能力已经普及;该容器在2015年左右在容器周围广泛滚动,从而带来了交付介质的标准化;在2018年左右,Kubernetes通过群集调度,操作和维护抽象来抽象。基础设施管理的标准化已经实现。在过去的两年中,Prometheus和Opentelemetry逐渐统一监测。诸如Envoy/Istio之类的服务网络技术使流量管理更加普遍。从这些云原生开发过程中,我们看到了云本机领域中零散和应用程序交付复杂性的问题,并提出了一个开放的应用程序模型和开放式OAM来源Kubevela试图解决这个问题。我们相信,应用层的标准化将是云的趋势。

  关于作者:

  Situ Fang,名称为“ Ji Feng” | Alibaba Cloud高级技术专家,Alibaba Cloud Application PAAS和无服务器产品线的负责人。2010年加入阿里巴巴后,许多跨代的演变参与了服务和云的本地结构,本机构结构,例如链接跟踪,容器虚拟化,全链接压力测试,多生命的位置,云生产的中间部分以及Cloud.Cloud等人的云。微服务,观察,无服务器和其他字段,并致力于通过云本地技术为外部企业提供成熟且稳定的互联网架构解决方案和产品。。

  作者:现场牙

  资料来源:阿里巴巴云