为什么说容器的崛起预示着云原生时代到来?
摘要:聊云原生之前,我们不妨从容器技术说起。
近年来,云原生(Cloud Native)可谓是 IT 界最火的概念之一,且随着云计算普及进程的不断加深,有愈演愈烈的趋势。今天再谈云原生已经不是少数几个大企业的专属,越来越多的企业正在拥抱它,享受它带来的红利。
说到云原生,我们就不得不先了解一下容器技术。作为一种先进的虚拟化技术,容器技术可谓是撑起了云原生生态的半壁江山,已然成为了云原生时代软件开发和运维的标准基础设施。在聊云原生之前,我们不妨从容器技术说起。
回顾云原生发展
整个云原生的生态蓬勃发展,也从Kubernetes项目本身发展到了如今内容丰富的宏大版图。底层有众多的容器运行时、容器存储、容器网络以及硬件加速器方案可以选择;面向用户层面,K8s的北向可以运行、对接各种业界主流的数据库、中间件等。目前已有超过90个厂商提供了认证的K8s的云服务或者发行版,并提供了丰富的周边软件、服务的配套支持。
2015年Kubernetes 1.0版本发布,标志着K8s已经生产可用,众多企业已经开始尝试在生产环境使用Kubernetes。同年,专门负责以K8s容器为代表的云原生开源项目与技术的推广与管理的CNCF云原生计算基金会成立,华为云是CNCF的初创会员之一。
短短两年后,K8s已完成了对各类容器平台的标准化统一。在2017年,各主流云厂商均已推出了Kubernetes Service,K8s成为了Container Service的代名词。同年底,容器技术的先行者Docker公司也宣布在其企业版产品Docker EE中支持Kubernetes。至此,容器生态统一到了Kubernetes平台之上。
到2020年,K8s即将要发布1.19版本,距离2015年的1.0已经有19个大版本发布,各项功能特性和接口API都已经趋于稳定,K8s已经进入了成熟期。未来社区将会如何发展?是否K8s的发展将会放缓了呢?恰恰相反,华为云云原生团队认为,K8s将会进入更高速发展的阶段,K8s将会与云计算的应用、平台、设备各层次进行更深入的结合。
各类现代化的应用都将会运行在K8s之上,不仅仅是当前以互联网App、WebService为代表的无状态应用,而新型的诸如大数据、AI、分布式数据中间件等等有状态应用,以及新型的边缘应用也将会普遍运行在K8s之上,从而K8s将完成对各类现有平台的归一化,成为一个统一的应用运行的基础平台。而为了更好地支撑现代化应用以及统一的基础技术平台,下层的各类设备包括虚拟化计算/网络/存储、裸金属服务器以及专用芯片如AI、高性能网络、高性能存储等等都会与K8s更紧密的配合,通过软硬一体化的方案来为上层应用提供更高性能、更稳定可靠、更高效的基础设施。与“应用、平台、设备”三个层面的协同,意味着K8s将真正成为“云的OS” – Cloud OS。
从行业来看,各类企业目前处于以5G、AI、边缘、VR、万物互联等等为代表的新技术爆发的时代,亟需优化企业业务运转效率,加快业务创新能力。在这个背景下,企业内的IT基础设施技术平台亟需标准化的统一管理。
而Kubernetes灵活的架构能力,使得K8s为代表的云原生技术成为这个“标准化企业IT统一管理平台”的最佳载体。首先,通过K8s南向与资源层的各类标准化接口,企业能够轻松实现基础设施资源的统一管理,其次,通过K8s的北向标准化应用API与CRD扩展能力,企业能够方便地统一管理上层各类业务,实现业务架构的统一,最后,通过K8s社区以Operator、Helm为代表的各类应用管理标准,企业能够构筑统一的IT应用服务目录,实现应用的共享,构筑统一的IT应用管理平台。
因此,在未来,企业内现存的各类基础软件平台,典型的包括以DevOps持续交付、微服务化开发为代表的应用与微服务平台,以AI、大数据、批量计算为代表的数据平台,以及面向5G、物联网、视频等场景的边缘平台,都将会统一到基于K8s的“云原生架构的技术平台”之上。从而,企业基于云原生技术平台将会真正实现对企业内各类业务的统一管理。
华为云坚持构建标准化、开源、开放的云原生技术平台
而华为云最早于2018年起即观察到了这一技术趋势,在容器全栈产品中构建了Vessel云原生技术平台,主要包括了以容器引擎iSula、容器网络Yangtse、容器存储Everest为代表的面向统一资源层的云原生基础设施组件,以及应用调度Volcano、云边协同框架KubeEdge、应用网格Terrace、监控与治理Glacier为代表的面向统一应用层的云原生应用平台组件。并且,向下与华为云擎天软硬一体化架构相结合,面向各行业用户,提供企业级高可靠、高性能,开放、易用的云原生技术平台。
华为云坚持构建标准化、开源、开放的云原生技术平台,不仅深度参与社区内包括K8s、Istio、Federation等核心项目,而且将自身产品的核心能力对外开放。华为云分别于2018年、2019年开源了KubeEdge边缘计算项目、Volcano批量计算项目,并捐献给了CNCF基金会,得到了社区的积极响应。这两个项目目前都在国内外多个企业实际生产环境得到了应用。
目前KubeEdge也即将进入CNCF incubator孵化阶段。在基础设施层,华为云在运行时、网络、存储、异构设施等方面都广泛参与或开放了多个开源项目,将华为云在基础设施层的丰富积累与社区共享,共同促进Kubernetes以及CNCF云原生社区的快速创新与发展。
云原生核心技术优势
云已经可以为我们提供稳定可以唾手可得的基础设施,但是业务上云成了一个难题,Kubernetes的出现与其说是从最初的容器编排解决方案,倒不如说是为了解决应用上云(即云原生应用)这个难题。包括微服务和FaaS/Serverless架构,都可以作为云原生应用的架构。
那么云原生究竟为什么这么受欢迎呢?总得来说有以下几大优势:
1. 利用容器和服务网格等技术,解耦软件开发,提高了业务开发部署的灵活性和易维护性
2. 以Kubernetes为核心的多层次、丰富的开源软件栈,被各大厂商支持,用户选择多,避免厂商绑定
3. 以K8s为核心的松耦合平台架构,易扩展,避免侵入式定制 - K8s已被公认是platform for platform
4. 通过中心编排过程动态管理和调度应用/微服务,提高工作效率和资源利用率
下面以两个云原生的代表技术为例,来帮助大家加深理解。
- 云原生代表技术:Kubernetes的声明式API – 面向开发者提供全新分布式原语
Kubernetes的最大亮点之一必定是它的声明式API设计,所谓的声明式就是告诉kubernetes你要什么,而不是告诉它怎么做命令。日常业务开发过程中,虽然常规的资源基本满足需求,但是这些常规的资源大多仅仅是代表相对底层、通用的概念的对象, 某些情况下我们总是想根据业务定制我们的资源类型,并且利用kubernetes的声明式API,对资源的增删改查进行监听并作出具体的业务功能。
有了自定义资源定义API,开发者将不需要逐一进行 Deployment、Service、ConfigMap 等步骤, 而是创建并关联一些用于表述整个应用程序或者软件服务的对象。API对象彼此互补、可组合。除此,还能使用自定义的高阶对象,并在这些高阶对象的基础上创建底层对象。
- 云原生代表技术:服务网格 – 剥离业务代码和分布式框架
服务网格通过非侵入式的方式接管应用的服务通信。对于每个业务单元/模块来说,他们甚至不需要对网络通信、负载均衡等有任何的感知。
服务网格提供细粒度流量治理,包括灰度发布、故障注入、可观测性支持等能力,挺高了业务应用的易维护性。对于企业开发者来说,服务网格可以很好地帮助他们剥离业务代码和分布式框架,平台团队聚焦框架层的开发和调优,业务团队聚焦业务本身的开发。
三大创新正式开启CloudNative 2.0时代
当前Cloud Native 1.0时代,虽然云原生在一定程度上加快了应用开发、简化了运维,但由于云原生技术聚焦在应用层,当前与云基础设施只是简单叠加的“云原生ON基础设施”架构。此时就会为企业带来单一的应用生态、单数据中心架构和应用于资源割裂都已成为当前企业大规模落地云原生仍面临挑战。
为此,华为云推出的云原生基础设施解决方案,提出“云原生 IN 基础设施”的融合架构,将云原生推进到Cloud Native 2.0,构建以应用为中心的云原生基础设施的时代。
- 重定义基础设施:华为云基于擎天架构实现了以应用为中心的资源调度,并且结合软硬协同技术,为企业提供极致性能、极致成本、极致体验的云原生基础设施。
- 新赋能泛在应用:华为云基于云原生集群联邦、边云协同等技术打造了多云与边云协同管理平台,能够帮助企业构建高效、可靠、跨云的统一业务平台,提供多云一致的管理体验。针对边缘场景,华为云边缘IEF提供了边云协同计算框架、离线自治、网络防抖动与故障自愈等技术,帮助企业将业务延伸至边缘,构筑云原生边云业务平台。
- 再升级应用架构:华为云坚持构建开放、标准化的应用生态,其中,基于云原生Operator框架实现了各类分布式中间件的标准化生命周期管理,为企业应用构建统一的分发、上线、运维平台;基于Istio打造的应用服务网格升级了企业的服务治理模式,实现业务的非侵入式微服务治理,打造统一的应用治理架构;Volcano批量计算引擎为企业各类AI、大数据、离线与实时计算类业务提供高效的调度能力,帮助企业快速构建智能化数据计算业务,打造统一的应用计算平台。
CNCF新星项目
边缘计算是对于云计算的补充和拓展,致力于让计算和连接物离得更近,去构建万物互联的基础。基于云原生技术构建边缘计算平台,会带来联接广泛性、数据带宽优化、边缘业务离线自治、提高安全性、保护隐私四个方面的核心技术价值。然而,K8S技术在应用过程中却面临着边缘资源受限、网络不畅、如何离线自治、设备接入和管理的问题。
无论从边缘应用的分发,边缘应用的可靠性还是边云协同的机制上,云原生边缘计算有利于让边缘也具备像云一样的“弹性”,让应用可以“顺滑”的部署到边缘,保持应用在边缘与云端的一致性。
通过更优的架构和技术实现,完美应对当前遇到的挑战。华为云推出了业界首个云原生边缘计算项目,且支持Apache 2.0协议的KubeEdge,基于Kubernetes的架构体系并针对边缘场景提供了诸如离线运行能力、边云协同能力等多种特殊能力的支持,将云原生的生态和开发体验延伸到边缘,面向开发者提供统一的开发、部署、管理视图,屏蔽边缘和云端的差异。
KubeEdge通过Kubernetes构建,100%兼容K8s API、云边协同、边缘离线自治、极致轻量、海量设备支持等六大能力将Kubernetes的能力拓展到边缘。从18年11月份宣布开源,19年3月成为CNCF官方项目,20年晋级为CNCF孵化项目。社区贡献者超460人,社区成员单位超35家。作为CNCF首个云原生边缘计算项目,同时成为K8s IoT edge WG和Akraino社区边缘服务参考架构。
与此同时,在AI、大数据向云原生迁移的过程中,K8S能力差距面临着资源分配/作业死锁、资源拓扑优化、任务之间的依赖关系、作业排队资源预留等能力差距。故此,华为云设计并开源了Volcano项目。
Volcano是基于Kubernetes构建的下一代批量计算平台,提供作业管理、批量调度、依赖管理、资源预留等能力,支持包括TensorFlow、Spark、MPI、Slurm在内的多个业界主流计算框架,主要帮助用户将AI、大数据等资源消耗波动大、计算密集型的业务从传统的Batch、HPC系统快速迁移到云原生。
Volcano于2019年6月份在KubeCon 上海宣布开源,目前发布了3个特性版本,受到多家企业的认可和支持,累计已有70多个开发者向项目贡献了代码。
如果你对云原生希望作进一步了解和学习,欢迎收看华为云1024程序员节的的各项技术演讲
直播盛典:邀请华为云云原生开源负责人、华为云DevCloud首席技术布道师等10+大咖现身,剖析云原生的行业趋势,倾授云原生实战秘籍。点击观看直播。
干货直通车:大佬级别专家手把手教学,经验和技术分享必不可少,还有在线互动答疑,带你揭晓大厂最深层代码技术,点击查看各技术会场,挖掘更多干货!
备注:本文整理自华为云云原生开源负责人在1024程序员节活动上的直播。