开发者学堂课程【云原生技术趋势与行业发展解读:从 KubeVela 谈起:云原生应用交付会怎样发展】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1035/detail/15146
从 KubeVela 谈起:云原生应用交付会怎样发展
其实我们四个原则每一个点,其实都是背后有很深的思考的,比如说在这一个统一的基础设施无关这一点上面,它其实就是这个oam模型的一个核心,因为我们原先在底下原生时代这么多基础设施能力的基础上,我们如果所有的开发者都要去学习的话,那么就爆炸了,那我们把这上百个api呢收敛成四个统一的,这个概念里面,它是不同模块,但是整体来说都是同一个概念,比如说你的这个工作负载都叫组件,可是虚拟机的组件可以是容器组件也是云浮的组件,但是都是组件,所以把这个不同的这个类型的收敛成组件,这个概念统一管理然后其他的另外一个概念就是运维能力比如说大家都是灰度发布,那么灰度发布的运动能力是扩容,就是扩缩容的一个能力,然后不同的能力背后的实现可以互换,但是整体提供的都是这种运维的能力,然后他在使用的方式填写的参数以及拥护的这个行为方面,那就很好的收敛了这个基础设施实现的复杂性,就相当于说为每一类场景提供了一个统一的抽象,所以这个就做到一个很好的统一,并且基础设施kbs很重要,因为你底下的线可以换,你上层有一层统一的这个概念,去帮助了你底下不同的事情。当然这不光是这么简单,因为所有人都会说,你解决一个问题,一个复杂的问题,最简单方法就是上面再包一层,把这个问题藏起来,但实际上,OAM里面,更多的只是一部,就是客户担心一会儿会说,第二个就是它是面向混合环境设计,我们刚刚也说到了,现在的这个现代用它其实是有不同的环境,不同的集群的,主要说三个特点,第一个就是运行时的结构,是完全工作在控制面肌群的一个一个组建,他其实可以让你的底下的那些开集群很干
净,比如说你要做这种灰度发布的全部数,你这个子集群里面什么东西都可以没有,全都在这个控制面去安装、使用、管理,所以你可以让你的这个培训很干净。另外方面,你可以在这个群里面装你喜欢的软件,然后由这个国家在管控面的去控制它,它不会进入到你的这个运行室里面,他只要在这个管控面的注册OAM的一个对象,把它注册成某一种能力,然后在这边就可以去操作这底下的能力了,他不会受到底下运行时的实现的这个影响。第二个就是它天然是支持多环境多集群的,其实多集群是一个原生态老大难的问题了,在以前的话会有像集训,联邦这些概念,最近一年的话,可能出来了向oempanda这些项目来解决,天然也是80多平的,而且它相比于你自己要去运维管理的群,有一个很大的好处,就是它和应用相结合,大家知道你要去使用多集群,一定是跟你的业务有关的,比如说你要部署,你要把一个应用高可用部署到两个群,或者说你要你要在某一个环境里面,某个配置好了以后,把它复制到另一个里面,适合你的应用交付是相关的,所以如果你要单独使用某一个多群技术,其实是很复杂的,因为你先要定义你的应用是什么,然后,在上面在外面一层包一层,把这个应用和多集群的技术,衔接起来才能使用,同时还要额外运维那个多群基础,但是在里面你天然在应用里面定义完了以后就可以使用多久了,你不太需要去额外的维护这样一个群,不太需要在上面再去写软件帮助它。第三就是提供了几乎业界独一无二的安全性,大家应大家可以去观察观察,在社区里面很多项目我就不点名了,就是里面的控制权限基本上都是kubevela,意思就是,你拥有了这个控制器的密钥,基本上就可以对这个集群为所欲为了,也就是说你想要把它毁灭掉也可以,就是已经有了一个核按钮,但是亏了他的这个点,就是你在里面只要开启了你的这个权限功能,你的权限是严格收敛的。这个控制面本身,他也不会拥有核按钮级别的权限,它只能操作他自己该操作的资源,然后只有这个管理员授权给他,或者授权给某一个用户去使用某个功能的时候才能操作,所以我们对这个安全的权限严格的控制了,并且集成了一些开箱即用的这个权限,就是你比如说你可以直接给他收一个集群,某一个namespace的完整的权限呢,只要点一下按钮或者执行命令就可以了,使用起来非常简单。同时呢,如果要精细化的操作,比如说你想要细粒度控制某一个具体的资源,比如说你不想让他出来就可以关掉,所以这个安全性,是用在这个冰箱和环境设计的时候呢,一个很强的一个功能。嗯,第三个也是第四个,也是最重要的一点,最重要的一点就是可扩展,可编程的能力,就是我们其实把扩展能力呢,是作为重中之重,刚刚提到如果我自己去写代码,也很容易搞一层抽象,就不用去管,可观的话随便装一些代码,就是让用户知道就好了,但是你的用户会变,他可能今天只想学这一点,明天想学另一点,那这个变的过程难道重新开发一套嘛,所以我们就提到要扩展,同时变成就是当你的用户想法变了,你的实际的业务场景变了以后,能够快速的去适配,满足这样一个新的需要。
所以,就提到我们有一个IC的引擎的背后就是你用户,就是有两种人嘛,一种是这个平台管理员,他不太需要去开发,不太需要去开发这套系统,它主要去注册配置,就编写这个模板,这个模板一一注册进去,你的用户就可以随时去发现新的能力,然后你用户体验这些参数,可以和这个背后的模板相结合,然后去实际的部署。
所以,用户在管理员准备好配置模板以后,他只要填写一些参数就可以使用。那这个背后的核心呢,就是我们有一个基于IP的一个工作的这个引擎,工作引擎它是运行在KBS上面的,一方面,它承载用户的这个比较简单的出路,因为用户想要扩展某一个字段它就管理员就在背后会增加一个字段可配,可以配置增加一个用户想关心你就给它隐藏起来,所以这个是完全可以动态变化并且是实时生效的,不需要去重新发布一次你背后的平台,另一方面就是因为kbs的这个存在我们始终坚持以这个面向众态来做这样一个,你的这个输入用户的输入执行,进来以后呢kbs的那个控制循环,会始终保证你的幂等性,就是如果你同时,它会不断的去轮询实时的资源的状态,比如说你的实力只交付了九个你原先订了十个,那他一定会帮你不断的同时一直恢复到十个,那如果多了他也会删掉,恢复到你指定的状态,然后如果出现一些问题,它会有一个自愈性所以整套机制,全都是在kbs这个控制平面上运行的,他也严格遵守kbs的这个模式的一个运转的规则自然也有kbs面向用户绝对健壮的用户流。缺点,可能大家也能意识到,就是顾客他会依赖这个缺点,我们现在也有了一套,基于K3S的一个单机版的模式,K3S这个项目大家可能也听过,他是一个咱们国产的一个开源项目,也是很有名的,它简化了,这个就是把它变成了一个适合于边缘平台或者说单机运行的一个K8S,它能够提供K8S的绝大多数的API的能力,那同时,它也简单不需要消耗非常多的资源可以运行,所以,借助这个K3S的这个基础,也提供这样一个基本的能力,就是你可以在一台Linux机器上面,或者你有多好的环境,就可以很容易的,把K3S加上一起运行起来,这样,一定程度上也降低了对于KBS复杂性的依赖。同时,K3S本身也相对来说,它的功能比较完整,他不完全依赖于KBS状态,他可以连接到某一个生产的Mexico这种数据库上的状态,也是通过这个数据库来保证它的高度呢,也不怕这个后面出现问题所以亏了在这个单机模式下对于一些公司没有一个kbs作为控制平面的场景就可以使用这种单机模式来运我们来看看刚刚提到的这样一个过程的流程,首先就是咱们的平台的工程师他们会去注册一系列的能力,模板对于这些工程师他的过程就是安装一些插件,然后配置一个环境,然后这个插件就注册到这个系统里面,这个就是一堆能力这个模板,然后对于普通的业务的工程师,就是咱们刚刚提到的工程师他们选择要部署的环境,查看这个里面有多少有能力查看一下,然后去发布到这个系统里面去,整个过程他这边想要关心的内容是非常简单的,可能最简单只要关心定向字段镜像副本数,访问域名就可以了,那如果这边的需求得不到满足,平台工程师只要随意的去改一下这个模板的能力,模板的暴露,更改一些字段,那这里就可以实时生效了,或者改一个名字,当然这背后,也不是随随便便的一个事情,他也有严格的这个版本控制,这个变化有一个版本是可以去保证对于已经部署在生产运行中的这些资源不会受到影响。然后对于kubevela来说,它会持有两块的概念,一个是能力的集合,另外一个就是用户输入的集合,这个用户收入和能力的两边一合并,就快开始工作了,比如说如果说是多集群的资源的话,就发到对应的云上面,这背后的能力都是由kubevela控制。那现在呢,
其实也很好的,刚刚也讲完了整体的一些原则。现在国内,也提供了一些能够让大家快速使用的方法,比如说左边这个,就是一个叫VelaD的项目,这个就是刚刚基于k3S的单机版,我们实际是试验过,如果你的网速还可以的话,不需要翻墙,网速还可以的情况下,在五分钟之内就能从下载到安装到kubevela.m完成整个过程,就像这个图片里面那样,整个过程全都是单机运行,也不需要下载那个安装包,以后不要网络,直接就可以使用了,所以体验起来非常容易,大家可以去玩一玩。另一方面,如果你连这个基本的机器环境都不太具备的话,你也可以直接使用这个叫killercroda的一个项目,就类似于以前的那个qq的。那这个项目,你可以直接通过网页点这个网站,就可以进去。交互是这边会出现一个界面,你可以输入对应的信息,也可以是教程,在上面就可以,这个用起来,也很简单,可能这边的话就是看你自己,几分钟都可以很快,也非常欢迎大家去看一看官方文档,了解了解背后的原理,用用看看,自己体验体验。那我们自然也有一个比较好用的界面,这个安装完了以后,就会跳出这样一个界面,你就可以在上面点点看看,自己感受感受。