在日前的KubeCon 2020中国线上峰会上,VMware中国研发中心架构师、Harbor项目创始人和维护者张海宁,和网易数帆轻舟事业部架构师、Harbor维护者裴明明,共同分享了如何在多云和多集群环境下高效率高质量地交付应用。(点击这里,了解Harbor项目张海宁介绍了应用交付的模型,面临的主要问题,以及如何使用云原生的方法实现应用的定义和交付。裴明明则通过网易轻舟云原生应用交付平台的设计与实践,详细解释了多云和跨集群环境下的应用交付的核心要素、应用场景与业务收益。

问题:云原生应用交付面临四大挑战

根据 CNCF定义的应用交付模型,包括应用定义与封装、应用部署与Rollout、workload 实例自动化与运维和平台等四个层面。这是一个复杂的流程,需要了解 Kubernetes 云原生技术生态体系的各种操作和概念。从整体上看,云原生技术体系下研发人员需要面对应用的定义、应用的简单管理、应用的监控和应用的运维等四个方面的挑战。

裴明明解释说,从应用交付流程来看,创建一个应用的时候,首先需要创建与应用本身相关的和与运维相关的大量资源,其次需要关注一些运维相关的概念,因为 Kubernetes 平台对 Workload 的定义是把研发和运维视为一个整体的,所以交付平台研发人员可能需要考虑如何分离研发和运维两种不同的角色,并将应用周边的资源作为一个整体管理好。

而在资源定义好之后,应用交付实际上也是对资源的操作与分发。这个时候还需要三个方面的保证,首先要保证分发的资源与创建出来的实例是一致的,其次需要资源分发过程有很多可选策略,以保证资源分发的效率和应用交付的可靠性,再次则要保证多云和多集群的环境下的支持——所谓云原生,计算资源应该是没有边界的,不管公有云、私有云还者是混合云资源,都可以使用。

破局:网易轻舟面向交付过程的设计

网易轻舟是基于网易云原生应用实践打造的一个云原生软件生产力平台,该平台主要提供微服务治理、DevOps、云原生中间件等能力,并通过网易数帆开放给行业客户使用,帮助这些客户快速获得云原生软件生产能力,从而为数字化业务推进提质增效。

在应用交付方面,网易轻舟平台基于 Kubernetes、Docker、Harbor 等开源技术打造云原生应用交付能力,借助 Kubernetes 的抽象能力,实现应用资源、应用开发、应用运维的统一管理,让用户可以灵活地操作自己的业务应用。

为了更有效地定义应用资源,网易轻舟基于 Kubernetes 和 Helm Chart 将资源聚合分类为 Deployment、Router、AutoScaling、Config 等,把这些应用相关的资源设计成 Kubernetes 上的 CRD,以便于用户定义资源和交付应用。

裴明明进一步介绍,网易轻舟基于应用交付过程定义资源,Workload 是应用交付的核心,围绕这个核心是路由规则、自动扩缩容等在应用交付过程中易变的资源,也是次核心资源,外围则是一些静态资源,如日志配置、网络配置、存储管理等,一次配置完成之后基本上不会再变更。这是一个面向应用交付过程的设计,把交付过程中需要频繁干预的资源归为一类,不需要频繁干预的资源归为一类,通过这样的归类可以较好地组织交付流程。

网易轻舟的实践,是通过模板(Template)来定义 Workload,把一些需要修改的点抽象出来,交给另外的角色去做——通常 Template 由运维工程师定义,由开发工程师使用,这样可以做到开发和运维的一些概念的分离。

在整个应用交付的过程中,网易轻舟通过一个代理层将应用的定义转换成一些具体的资源,并驱动应用交付流程往后进行。除了资源的实际操作,代理层的另一个功能,是监控和调整应用下面的资源,让实际资源与定义保持一致。

此外,在流量控制方面,网易轻舟实现了应用交付与 Service Mesh 的整合,聚合不同 Service Mesh 集群的服务,统一对外提供服务,使得业务访问更加轻松。

裴明明表示,网易轻舟跨集群应用交付实践中,用户实际上面对的是整个应用的视图,不需要关心应用的具体部署,对用户而言,应用和服务都是一个整体;另外一个好处,在运维的时候,运维工程师可以从应用的视角去管理不同集群上的资源,比较方便的看到这些资源的关联。

收益:多云和跨集群应用交付的四大利好

裴明明最后总结了网易轻舟多云和多集群环境下的应用交付的应用场景和收益。

首先是容灾,利用网易轻舟支持多云部署的能力,实现跨机房部署业务应用,当其中一个机房宕机时,另外一个机房的服务仍然可以继续访问,从而保证服务的可靠性。

其次是资源弹性。在资源比较紧张的时候,用户可以借助网易轻舟把应用弹到任意一个公有云或者是私有云,从而可以利用更多的资源。

再次是区域相关性的访问和服务隔离。通过网易轻舟将应用部署在不同的集群中,再借助一些环境标识之类的信息去访问指定的服务。

第四是降低应用交付的复杂性。因为网易轻舟应用交付整个流程都是自动驱动的,所以可以有效地减少各种复杂的操作,同时应用交付的效率也可以得到提升。

顶级技术盛会KubeCon 2020,网易轻舟布道多云环境云原生应用交付的更多相关文章

  1. ​第3届云原生技术实践峰会(CNBPS 2020)重磅开启,“原”力蓄势待发!

    CNBPS 2020将在11月19-21日全新启动!作为国内最有影响力的云原生盛会之一,云原生技术实践峰会(CNBPS)至今已举办三届. 在2019年的CNBPS上,灵雀云CTO陈恺喊出"云 ...

  2. 规模化落地云原生,阿里云即将重磅亮相 KubeCon China

    2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...

  3. DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路

    简介: 数据库将面临怎样的变革?云原生数据库与数据仓库有哪些独特优势?在日前的 DTCC 2020大会上,阿里巴巴集团副总裁.阿里云数据库产品事业部总裁.ACM杰出科学家李飞飞就<云原生分布式数 ...

  4. 《CNCF × Alibaba云原生技术公开课》知识点自测(一):第一堂“云原生”课

    (单选)1.容器启动后,我会时常 SSH 进入到容器里然后写很多文件.请问这破坏了云原生理念了吗? A. 否   B. 是 (单选)2.云原生架构必须选型 Kubernetes 方案. A. 否  B ...

  5. CNCF 旗下首个为中国开发者量身打造的云原生课程,《CNCF x Alibaba 云原生技术公开课》即将上线

    伴随着以 Kubernetes 为代表的云原生技术体系的日益成熟以及 CNCF 生态的逐渐壮大,“云原生”已然成为了未来云计算时代里一个当仁不让的关键词.但是,到底什么是“云原生”?云原生与 CNCF ...

  6. 云原生技术赋能ISV实现应用现代化

    日前,由BP商业伙伴主办,中国开源云联盟和云原生应用现代化联盟协办的2021-2022云计算生态峰会成功举办.头部ISV代表.最终用户和云原生技术专家等与会各方围绕"云原生技术赋能ISV&q ...

  7. 大会聚焦 | 开源技术盛会LinuxCon首次来到中国,大咖齐聚关注业界动态

    2017年6月19-20日,开源技术盛会LinuxCon + ContainerCon + CloudOpen(LC3)首次在中国举行.两天议程满满,包括 17 个主旨演讲.8 个分会场的 88 场技 ...

  8. MongoDB全球云端技术盛会MongoDB.live

    MongoDB全球云端技术盛会MongoDB.live,将于北京时间6月9日22:00正式开启,大会将以在线直播+按需学习相结合的方式,面向全球开发者.架构师等MongoDB 用户和爱好者免费开放,精 ...

  9. “行业客户云原生最佳实践日” 亮相KubeCon上海

    2018年11月13日至15日,由CNCF主办的KubeCon + CloudNativeCon将首次登陆中国上海,这是全球范围内规模最大的Kubernetes和云原生技术盛会. 唯一聚焦客户实践的分 ...

随机推荐

  1. 前端学习(十三):CSS盒子模型

    进击のpython ***** 前端学习--CSS盒子模型 在前面的时候也说过,包括分析网页结构的时候,提到了,网页就其实就是一个一个盒子叠起来的 那现在就是有装饰的盒子,难度就变得深刻 所以说为了能 ...

  2. 【Nginx】如何实现Nginx的高可用负载均衡?看完我也会了!!

    写在前面 不得不说,最近小伙伴们的学习热情是越来越高,不断向冰河提出新的想学习的技术.这不,又有小伙伴问我:冰河,你在[Nginx专题]写的文章基本上都是Nginx单机版的,能不能写一篇关于Nginx ...

  3. Flask框架(一):介绍与环境搭建

    1.Flask介绍 Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核, ...

  4. lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?

    lua中 table.getn(t) .#t. table.maxn(t) 这三个什么区别? RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = ...

  5. break statement not within loop or switch报错

    break statement not within loop or switch. 注意你的循环,可能多加了个分号.for语句后面?

  6. Django开发之Ajax 返回内容报错

    预期效果 Django通过Ajax POST提交数据,前台弹窗处理结果 粗略代码 # views.py 代码 ...省略... msg = { 'code': 200, 'message': 'Hel ...

  7. MacOS 键盘符号和修饰键说明

    原文链接:https://www.cnblogs.com/exmyth/p/5949192.html   Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Cont ...

  8. Python os.stat() 方法

    概述 os.stat() 方法用于在给定的路径上执行一个系统 stat 的调用.高佣联盟 www.cgewang.com 语法 stat()方法语法格式如下: os.stat(path) 参数 pat ...

  9. python机器学习经典实例PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:caji 在如今这个处处以数据驱动的世界中,机器学习正变得越来越大众化.它已经被广泛地应用于不同领域,如搜索引擎.机器人.无人驾驶汽车等.Python机器学习经典实例首先通过实用的案例 ...

  10. Spring学习总结(6)-@Component和@ComponentScan注解

    参考文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/core.html#beans-ste ...