最近云原生的概念很火,企业实施云原生的愿望越来越强烈。看了很多云原生的文章,不是云遮雾绕,就是歌高歌低。于是作者有了写系列文章《大话云原生》的想法,希望能用最通俗最通俗的语言,来说明白云原生生态中的组成和应用关系。那么,让我们开始吧,这是第一篇文章!这真的是一篇关于架构技术的文章,不是小说!我建议你继续读下去!1、周末包饺子,聊容器问题。周末和老婆包饺子,老公,我去买瓶醋,你先包饺子。我手脚笨拙,准备了很久,还没等我做完饭,老婆就回来了。我看着一锅饺子问道:“亲爱的,你说这家的饺子怎么样?每个人的口味和胃口都不一样,想想就头疼!”同时,他说:“饭店当然不能像家里那样煮饺子,他们有专门的锅,就是那个样子。”感觉自己嫁了个傻女人,“长啥样?能不能用手画出来?爱情公寓看多了?”。听到我的抱怨,老婆拿起手机搜索:“不对,就是这个样子,你这个笨蛋!”“餐厅用这种锅煮饺子,多个容器,每个容器里放一个顾客点的饺子。”做生活达人的小娜见多识广,“哎,我去,这不就是一台启动多个docker容器的服务器吗?”同为程序员的小娜赞道:“老公,你真是真的对,最近刚看docker,还不知道怎么用!”二、说说docker和煮饺子的容器“docker作为前端你学什么”小娜不服气,“哎,你别看不起人,我还是懂k8s的”,这让我有点意外,就在我吃惊的时候,老婆差点让我吐出一句话:“那k8s是什么?”我们讨论了一下吃完饭她洗碗,我给她讲docker和k8。过了一会,饭后辅导开始了:饭店煮饺子本身就是一个服务(应用服务),煮饺子的锅是就像一个服务器,而锅中的每个网笼就像一个docker容器,网笼只煮一种饺子,就像docker容器通常只提供一种服务(微服务)。同一台服务器上的docker容器之间可以进行必要的隔离,避免资源冲突(不同馅料的饺子混在一起)。它还可以充分共享服务器资源(那一壶水和电源),实现资源的合理利用,避免浪费。小娜笑着点头表示明白,“那酒店规模变大了,客人也变多了,还要买更多的大锅(服务器)?”当然,你看,当服务器数量增加的时候,很多情况下,就形成了一个集群。docker容器的另一个优势是它的标准化。这里的标准化代表部署的灵活性。如果一号锅突然没电了,煮饺子的人可以把饺子容器拔出来插到二号锅里,因为容器的规格是一样的。就像docker容器可以灵活快速的启动一样,可以在不同的服务器上启动提供服务。小娜又点了点头,用欣赏的目光看着我。趁热打铁,我总结道:“docker容器有效地实现了服务环境封装的标准化,以及服务器容器之间的环境隔离和资源共享。”3.说说集群煮饺子(k8s)小娜迫不及待地期待下一个内容,“懂docker,说说k8s”。我神神秘秘地说,你看,餐厅的集群式集装箱烹饪模式还有哪些问题需要解决?我们两人商量了一会,总结出以下几点:餐厅的客流不一定满满的,大锅的数量一定要按照最大的需求量来买,但是大锅要有一定的时间闲置的。一定有一定的客流规律吧?比如周末客流比工作日大,下班后客流比上班时间大。如果突然有旅游团进来吃饭,谁来应急?快插上大锅?烧水?满足用餐需求?如果为了避免煮出来的饺子味道混乱,素馅是不是应该用不同的容器放在一个大锅里煮呢?肉馅放在一起,海鲜馅一起煮会不会更好?有没有人要定期检查“大锅”和大锅里的容器的卫生和运行状况(healthcheck)?难道非得是明知一两素饺子是唐僧的,四两肉馅饺子是猪八戒的吗?其实需要注意的问题还有很多,归纳起来就是:任务分配或者服务编排,或者容器编排问题。k8s的主要功能就是解决这样一些问题:根据访问量快速扩容和缩容容器的数量。按照一定的预定计划执行容器编排工作、应急管理工作和健康检查工作,合理安排容器。有些容器放在CPU密集型服务器上,有些容器放在内存密集型容器上。毕竟,一些容器运行计算微服务,而另一些容器运行消耗内存的微服务。合理安排才能达到资源的最大利用。以上以及其他容器管理和编排的问题都需要k8s来管理和支撑,而且是自动化支撑。说到这里,小娜同学若有所思,“我明白了,但是我感觉这东西好庞大,好复杂。开发一个应用一起部署不好吗?为什么这么复杂?还别说,小娜同学真的说到点子上了。但也不能一下子完成,不然明天谁来洗碗?欢迎关注我的博客,更多优质知识合集转载于本文,注明出处(必须有链接,不能只是文字):字母哥博客-zimug.com
