床长人工智能教程免费文档——谷歌大神详解 Kuberne
.
声明:本人只是分享一些床长人工智能教程相关的免费pdf文档而已,并非床长人工智能网校的收费文章。尊重版权,支持原创!
于梦琦美国谷歌软件工程师
嘉宾介绍
美国谷歌组核心成员,主要从事开发以及配置管理的研究与开发。
本科和硕士分别毕业于上海交通大学和
大家好!我是来自谷歌的于梦琦。
今天我来给大家介绍一下配置管理中的最佳方法。
中的概念
我们先来说一下中几个重要的概念第一个要说也是最重要的就是,的意思是申明的陈述的,与之相反的是,意思是命令式的。
首先说一下设计完全是按照设计的。
但为了初学者的学习方便,也是支持。
对的功能非常重要,比如说它的自育性自治能力都完全是依赖于第二个概念是,。
第三个概念是异步的。
这些概念在后面会详细的介绍。
与的对比
首先看一下和的区别和对比。
的定义是用户设定期望的状态,系统会知道它需要执行什么操作,来达到期望的状态。
比如说我们看下面的例子。
用户期望的状态是三个,系统观察到的状态是两个。
于是系统就会知道创建一个新的来达到最终状态是三个。
而对于,需要用户告诉系统需要做什么。
比如说用户说创建一个新的,系统才会创建一个新的。
与的对比
大部分的都有和两个。
是让用户写入期望的状态,系统可以通过读出用户的期望。
是系统写入观察到的状态,用户可以从中读出系统当前是什么状态。
这两个对于是非常重要的,接下来看一下什么叫?
中文意思是调和,和解的意思,简单的说就是它不断使系统当的状态,向用户期望的状态移动。
比如说右边的例子,用户期望的是三个,通过发现期望的状态是个,但实际观测到的的是个,所以它就会一个新的。
然后会继续这些,当它发现完成了,就会更新到个,使和达到一致的状态。
与的对比
接下来再来说一下–和的区别。
首先说一下是。
先看一下右边的例子。
最上面是用户期望的状态变化。
中间的是某一个的变化。
最下面是的的状态。
在第二条虚线这个时刻,用户希望更新应用的版本,从到,然而在第一条虚线和第三条虚线中间,我们的死了。
对于的就会错过这个用户的更新请求,状态就没有变化。
对于我们的的就会在重新启动的时候发现用户的请求变化,就会更新版本到。
在这个时候用户想他的应用的到个,这时候我们可以看到的就会直接,最终达到一个错误的状态。
的就会最终达到正确的状态。
的可以被分为三类和。
第一类是叫做。
的主要就是通过命令行的直接进行的操作,或者是之类的。
例子是,,或者是,它就会把底层对于对象配置的操作对用户隐藏了起来。
接下来我们再来看一下它们优缺点的对比。
的优点就是直接简单,易于实现。
缺点就是如果错过了一个,可能就会导致一个最终的错误的状态。
的优点就是不用担心这个,另外一个缺点是不会采用直接的路径达到当前的状态,比如说当前的版本是,用户想要更新到,紧接着用户发现了什么问题,马上想更新到。
对一个的
就会完成的更新,然后再去更新。
而如果对一个的会在接收到的更新请求的时候直接开始更新,而不会等完成再更新。
第二类要说的是对象配置,的意思是一个对象可以被定义为或者的格式存储在文件中,我们叫它。
是直接对进行的操作,比如说。
然后说一下第一类和第二类的对比。
第一种的优点是简单直接易学易记,缺点是没有办法使用,就是先更改再去批准流程,而且没有办法使用。
的意思就是审计追踪又可以叫做,它会记录系统的各种变化。
第三个缺点是没法提供一个模板。
相对于,的优点是可以进行版本控制,比如说可以用,也可以用
这个流程,也可以用,它的确定就是需要用户对于对象的有一个基本的理解,另一个缺点就是需要用户写文件。
第三类是的是的对象配置。
它也是直接对进行操作的。
用户不需要指定要,还是,直接会帮你决定谁用哪一种。
例子就是–。
接下来对比第二类和第三类的区别。
对于的优点就是简单一些,稍微易理解一些。
但它的缺点就是对于一个目录的配置文件只能选择同一种操作。
它的第二个缺点就是其他用户的更新,必须被反应在配置文件中,不然其他用户的更新就会在下一次的更新中被丢掉。
接下来说一下的优点。
它的优点就是其他用户的更新可以被保留下来,比如说我的帮你管理的这个,你管理其他的,你们之间就不会有冲突。
第二个优点是对同一个目录下的对象可以有不同的操作,可以是,缺点就是这个行为稍微难理解一些,需要时间来学习。
接下来说一下配置的管理。
先从简单的说,如果是一个新手用户,我们建议他从最开始的开始用起学起,接下来可以尝试使用。
而对于比较高级的用户,我们推荐用来管理他的配置,同时要使用版本控制和的流程。
对于新手用户来说,就是存放期望状态唯一的地方,它能支持一定数量的版本历史,但无法支持很长的历史,也不支持跨对象的历史。
对于高阶用户,我们推荐将期望的状态存在版本控制中,好处就是可以支持跨对象的历史。
比如说有多个,或者是其他的,他们之间有互相的依赖关系。
我们可以在整个系统在一个好的状态下,把整个做一个。
如果我们在后面的生产中遇到重大的问题需要回滚,可以直接回滚到之前的好的状态的上。
另外是推荐使用。
你把配置存放到中,然后有一个工具可以自动的把配置应用到集群上。
这里有一个做的开源项目,就是
随后,于梦琦老师在现场做了一个,感兴趣的同学,可以戳阅读原文观看。
,这是我们正在开发的一个工作流程,比之前的只多了前面的一个步骤。
最下面的东西相当是一个应用商店,后面的三个步骤基本上是一样的。
有了这个应用商店,可以从中找到通用的应用,比如说找一个,然后可以把这个配置的下来,可以做一些你想要的改变,到时候会有一些工具帮助你做改变。
比如说所有的前面都加,或者是加上一些名字前缀,后面一步可选择就是可以创建一个,前三步可以到一个的,第四步可以把自定义的应用到前面三步产生的。
可以把这个想象成一个。
比如说有个不同的,和开发的环境,就有三个不同的,要应用到相同的上,可以拿到三个不同的,可以应用于三个不同的环境。
后面步骤是一样的。
再简单说一下。
现在中的有一个。
一些应用被写成了的格式,可以用跑起来。
但现在遇到的挑战,就是很难在此之中找到平衡,既使我们有足够多的参数满足所有的用户的需求,又能使这个应用不会因为参数过多导致难以维护,所以我们。。。