干货整理 | 容器是 DevOps 的必由之路——标准化带来的 DevOps(上)

还记得在上周小编去围观了“ 2017 全球全球云计算开源峰会”吗?有好多小伙伴在微信后台留言表示小编为什么不通知大家,害的大家都没有到现场去围观。我错了。。。为了弥补大家(其实是害怕下班途中被堵),小编吐血整理了技术总监大大的演讲稿献给大家。由于篇幅较长,今天就先给大家献上演讲稿上篇。


容器是 DevOps 的必由之路

——标准化带来的 DevOps


分享人:张春源


大家好,我来自希云 cSphere 的张春源,今天给大家分享的主题是“容器是 DevOps 的必由之路——标准化带来 DevOps ”。谈到 DevOps 话题特别大,我从容器的角度给大家分享一下,为什么容器是 DevOps 的必由之路。先简单介绍我自己,我比较遵守“恪守契约精神,务实开放合作”的精神,同时这也是希云 cSphere 的公司文化。我从 2013 年开始接触到 Docker 技术,并且有幸加入到希云 cSphere 这家专门为企业客户提供容器云平台的公司。在近 3 年时间,我一直在为企业提供容器云解决方案。


今天我和大家分享一下什么是创造力,提到这个词大家会想到飘忽不定。人的大脑思维状态大致有两种:一种是专注状态,这种状态下的大脑模式被称为“Executive Network”,执行网络,简称 EN。另一种是放空状态,相应开启的是“Default Network”,默认网络,简称 DN。专注模式我们比较熟悉,我们在学校接受教育主要训练的就是 EN,它是大脑中靠近前侧头盖骨的区域,能助你专注和完成任务。但是光靠 EN 是不能产生创造力的,还需要一个能帮助我们放空的网络 DN,它是我们突破性想法的聚集地,但是很多时候我们并意识不到它的存在。那么一个伟大的创造中,EN 和 DN 如何协同工作?根据神经研究表明,如果说 EN 帮助你专注和完成一件事,那 DN 则是帮助你从更高的角度纵观事情的复杂程度,透视全局。所有我们需要同时具备开启两种模式的能力,而且能在它们之间自由切换。


我之所以和大家分享什么是创造力,主要是想说明现在随着企业业务的迅速发展,IT 系统也要能及时响应业务的需求。我们需要一种全新的思维、全新的方法来构建企业的 IT 系统。


DevOps 主要用于开发、测试以及运维之间的协作管理,并且通过自动化流程,更加快捷、频繁、易重复且可靠的构建软件、测试及发布部署。在容器没有出现之前也有 DevOps,并且发展了这么多年,企业常用的做法是通过自动化脚本去实现配置引擎,例如:Puppet、Chef、Ansible 等工具。基于以上工具来实践 DevOps,为什么没有使得 DevOps 发展起来,而且在企业中落地艰难。其中第一个原因包括是脚本缺陷。主要体现在:

  • 人员强依赖:比如这个脚本是我写的,另外一同事不一定能把这个脚本用起来;

  • 不具备收敛:发现问题,首先要使问题收敛,目前使用的方法是不具备收敛的;

  • 非标准:不同人脚本的写法是不一样的,但实现的结果都一样;

  • 不具备回退:没有做版本管理。讲到版本管理,我们的代码都有版本管理,但是我们的代码的运行环境,这个环境是没有做过版本管理的,所以回退操作难度高。


第二个原因是配置引擎的缺陷,像 DSL 语言,使用门槛太高。解耦也不够,特定的人去特定的事,如果这个人因为生病了或者请假了,这个发布就会终止。这些问题都导致了 DevOps 无法在企业落地。


给大家分享一个客户实践 DevOps 失败后的案例这位客户是个国企。对于国企来说,招人难度很高,很难招到技术特别高的人才,而且他们也想要通过 DevOps 这个技术实现增长,难度也就比较大。另外开发和运营分裂,系统开发是第三方厂商,真正运营的时候是自己在运营。两团队不在同一个公司,要让开发掌握这些工具,难度更大。而且开发根本不关心底层的机器是什么,他们说尽可能不让我们看到机器最好,这他们真正的诉求。说白了,为什么 DevOps 这么难落地,就是在企业中很难形成从开发到测试再到生产统一的一致性流水线工作。


接下来给大家说说容器是什么,在这里我可以肯定地告诉大家,容器不是虚拟机。大家可以从 PPT 上看到容器、虚拟机、物理机的对比。容器到底是什么,先来看第一张图,物理机和容器,物理机安装 OS ,再安装 Docker 引擎,然后容器就可以运行在物理机中了;第二张图,物理机之上运行虚拟机,然后容器运行在虚拟机之上,这种架构,我们看到它有两个 OS ,一个 OS 是物理机的,一个是虚拟机的,然后上面才是容器;第三张图,不知道大家有没有想过,容器就是一个进程,对于 KVM 虚拟机其实在容器来看,它也只是一个进程而已,所以可以把一个虚拟机跑到一个容器里。重点说一下第三张图,容器运行在虚拟机下层,容器是直接跑到裸机里的。说到这里大家会问,容器到底跑虚机好还是跑裸机好,回答这个问题主要从 2 个方面来考虑,因为容器技术也有限制,比如我们的业务系统,多个系统之间对安全性没有特别强的需求,此时可以跑裸机里面;如果隔离性是强需求,那么推荐运行到虚拟机中,使用虚拟机来做彻底地隔离,容器是没法实现多租户的。容器是增强版的进程,我们来看传统的 Linux,如我们去装系统或者装软件,都通过 RPM 包,容器是使用镜像来安装,yum -y install 后会安装很多包,包与包之间的依赖关系复杂,很难一眼看出是谁依赖谁。对于传统的 Linux 是一个普通的进程,所有的程序、所有的进程是在同一个平面上,通过容器相当于给每个进程都做了一个"箱子",虽然“容器”都是运行在操作系统中,但彼此之间相互做了隔离。


容器镜像的一个机制——COW ,大家比较熟,我就不多说了。大家比较关注的是容器的性能,这个测试报表是基于IBM服务器机器做的,可以看到物理机和容器性能之间是基本一致,无损耗,但虚拟机损耗大约在 50% ,损耗比较大。


为什么说容器技术恰恰能克服这些阻力呢。第一,开发使用简单,因为在开发的时候不需要关注这个机器还有运行环境是什么,而能更加清晰的规划开发和运维的界面。第二、抽象层次足够高,解耦彻底,而且容器是行业通用的标准,DevOps 发展那么多年,为什么说它没有流行起来,比如说刚才提到实现 DevOps 平台多种技术多种工具,这些工具的标准搬到其他的公司它未必适用,不同公司的文化也不一样。容器标准的生命力特别强,容器可以让 DevOps 普及发展以及流行,并且走出阴霾,证明 DevOps 的先进性,也确实是可以落地的。


你可能感兴趣的:(docker精品文章,Docker,paas,希云,云计算,自动化)