前言:云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈。看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡。 所以笔者就有了写《大话云原生》系列文章的想法,期望用最通俗、简单的语言说明白什么是云原生。那么,开始吧,这是第一篇!

这真的是一篇讲架构技术的文章,不是小说,不是口水!建议您看下去!

一、周末煮饺子

周末和老婆一起包了顿饺子,“老公,我去买瓶醋,你把饺子先煮一下吧”。我笨手笨脚准备半天,还没煮完,老婆就回来了。我看着这一锅饺子问道:“老婆,你说这饭店是怎么煮饺子的啊?每个人口味不一样,饭量也都不一样啊,想想都头疼!”

小娜同学一边用手比划一边说:“饭店当然不能像家里这么煮饺子啊,他们有一种特制的锅,就是那个、那个样子的”。我感觉自己娶了一个傻女人,“到底是哪个样子的?用手能比划出来啊?你是不是爱情公寓看多了?”。老婆听到我的抱怨,拿起手机搜索了一下:“诺,就是这个样子的,你个白痴!”

“饭店就是用这种锅煮饺子的,水是一锅水,炉是一个炉,分成多个容器,每个容器里面放入一个客人点的饺子就可以啦。”作为生活小能手的小娜同学知道的可真多。“哎我去,这不就是一个服务器启动了多个 docker 容器么?”同样作为程序员的小娜赞到:“老公,你说的还真对哈,我最近可是刚看了 docker 呢,但我还不太会用!”。

二、说说 docker 与容器

"你一个前端学什么 docker"。小娜不服气了,"哎,你别瞧不起人,我还知道 k8s 呢"。这可让我有点意外,正当我意外之时,老婆一句话差点让我喷出来:"那 k8s 到底是个什么东西啊?",我们商量好饭后她刷碗,我给她说说 docker 与 k8。

不一会就开始了饭后辅导: 饭店煮饺子本身就是一种服务(应用服务),煮饺子的锅就像一个服务器,锅里的每一个网状笼就像一个 docker 容器,通常情况下一个网状笼只煮一种饺子,就像一个 docker 容器通常只提供一个服务(微服务)。同一个服务器上的 docker 容器之间能够进行必要的隔离,避免资源冲突(不同馅的饺子煮混)。又能充分的共享服务器资源(那一锅水和供电),达到资源的合理利用,避免浪费。

小娜微笑点点头表示明白了,”那饭店规模变大,客人越来越多,就得买更多的大锅(服务器)啊?"

那是当然喽,你看哈,当服务器越来越多的时候就组成了集群。docker 容器还有一个好处就是它的标准化,标准化在这里就代表了灵活。假如一号锅突然断电了,煮饺子的师傅就可以把煮饺子的容器拔出来插入二号锅,因为容器的标准是一样的。就像 docker 容器可以灵活快速的启动,在不同的服务器上启动提供服务。

小娜同学再次的点了点头,向我投来仰慕的眼光。趁热打铁,我总结道:”docker 容器有效的实现了服务的环境封装的标准化,以及同服务器容器之间的资源隔离,资源共享“。

三、聊聊 k8s

小娜同学对于接下来的内容已经迫不及待了,"docker 我懂了,快说说 k8s"。我故弄玄虚的说到,你看哈,现在这个服务器集群+docker 容器的方式还有什么问题?我们俩讨论了一下,总结了下面这几条:

  • 饭店的客流量不总是满的,大锅的个数肯定是按照最大需求买的,但是肯定有部分的时间大锅是闲置的。

  • 客流量肯定是有一定的规律的吧?比如周末比工作日客流量大,下班后比上班时间客流量大。

  • 假如突然来了一个旅游团进来用餐,谁来做应急管理?快速的给大锅插电?烧水?满足用餐需求?

  • 如果为了避免煮出来的饺子味道混淆,是不是素馅类不同容器的放到一个大锅里面煮?肉馅的放在一起煮、海鲜馅的放在一起煮会好一些?

  • 是不是得有人定期的对“大锅”和大锅里面的容器进行健康检查?

  • 是不是得有一个人清楚的知道,素馅的一两饺子是唐僧的,肉馅的四两饺子是猪八戒的?

其实还有很多需要注意的问题,所有的这些都可以归纳为:任务分配或者是服务编排,或者是容器的编排问题。k8s 的主要作用就是用来解决类似这样的一些问题:

  • 根据访问量大小快速的对容器进行扩容、缩容。

  • 遵循一定的预定计划来执行容器编排工作、应急管理工作、健康检查工作

  • 合理的编排容器,有些容器放在 CPU 密集型的服务器上,有些容器放在内存密集型容器上。合理的编排能够达到资源的最大利用率。

等等这些进行容器管理、编排的问题,都需要 k8s 来支撑,而且是自动化支撑。 说到这里,小娜同学若有所思,“我听是听明白了,但是感觉这东西好庞大、好复杂啊。搞一个应用部署不好么?为什么搞这么复杂?”

还别说,小娜同学还真问道点子上了,但这也不能一次全都讲完啊,否则明天的碗谁来刷?

 
发布于: 2022-07-02阅读数: 62

版权声明: 本文为 InfoQ 作者【字母哥哥】的原创文章。

原文链接:【https://xie.infoq.cn/article/8e7ac466d26f60c8bc8be0a12】。未经作者许可,禁止转载。

[转帖]煮饺子与 docker、kubernetes 之间的关系的更多相关文章

  1. 【大话云原生】煮饺子与docker、kubernetes之间的关系

    云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈.看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡. 所以笔者就有了写<大话云原生>系列文章的想法,期望用最通俗.简单的语言说明 ...

  2. [转帖]git、github、gitlab之间的关系

    Git - 版本控制工具 Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等 GitLab - 基于Git的项目管理软件 Git分布式版本控制系统 Git是一款 ...

  3. 15 docker 网络 docker 容器之间的关系 docker link

    1.案例:使用 link 关联后台与数据库 创建 test1 容器 docker run -d --name test1 busybox /bin/sh -c "while true; do ...

  4. 【转帖】极简Docker和Kubernetes发展史

    极简Docker和Kubernetes发展史 https://www.cnblogs.com/chenqionghe/p/11454248.html 2013年 Docker项目开源 2013年,以A ...

  5. Docker Kubernetes 项目

    Kubernetes 是 Google 团队发起并维护的基于Docker的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心. 建于Docker之上的Kubernetes可以构建一个容 ...

  6. Docker Kubernetes 常用命令

    Docker Kubernetes 常用命令 增 # 通过文件名或标准输入创建资源. kubectl create # 读取指定文件内容,进行创建.(配置文件可指定json,yaml文件). kube ...

  7. Docker Kubernetes Volume 本地数据卷

    Docker Kubernetes Volume 本地数据卷 emptyDir 当Pod分配到Node时,首先创建一个空卷,并挂载到Pod中的容器. Pod中的容器可以读取和写入卷中的文件. 当Pod ...

  8. 【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)

    书名:Docker+Kubernetes应用开发与快速上云 作者:李文强 出版社:机械工业出版社 出版时间:2020-01 ISBN:9787111643012 [山外笔记-云原生]<Docke ...

  9. 【Linux】【Services】【SaaS】Docker+kubernetes(1. 基础概念与架构图)

    1.简介 1.1.  背景:公司正在进行敏捷开发环境的搭建,以取代传统的架构,好处大大的,我就不赘述了.公司原来负责这个项目的同事要转组,我只好交给另外同事继续,但是为了防止同样的事情,我也需要深入了 ...

  10. OpenStack、虚拟机以及和当前流行的k8s、Docker四者之间的关系

    一.OpenStack与虚拟机之间的关系 OpenStack使用Python语言开发,是虚拟资源管理工具,他可以协助你搜集各种资源,并加以利用以及管理,实现物理资源的高效使用和安全.虚拟化物理机这个动 ...

随机推荐

  1. 2023-05-30:Redis6.0为什么要引入多线程呢?

    2023-05-30:Redis6.0为什么要引入多线程呢? 答案2023-05-30: Redis多线程比单线程性能提升一倍: Redis 6.0 引入多线程 IO 特性对性能提升至少是一倍以上.据 ...

  2. Java 插入、隐藏/显示、删除Excel行或列

    概述 操作Excel工作表时,对表格中的行或列数据可执行,包括插入.隐藏.显示.删除等在内的多种操作需求,本文将通过Java代码示例演示每种操作的具体实现方法.文中方法使用了Java Excel类库( ...

  3. 技术解读丨GaussDB数仓高可用容灾利器之逻辑备份

    摘要:GaussDB数仓的Roach工具,同时提供物理备份和逻辑备份两种主要形态的备份.逻辑备份针对数据库的逻辑对象进行抽取和备份,能够有效地应对单表.schema级等较细粒度的备份,较为灵活和便利. ...

  4. 低代码开发不靠谱?看低代码开发在物联网APP开发中的应用

    摘要:云编排式物联APP开发平台可通过云端可视化编排开发,边端远程自动化部署,云边协同管理运维的方式,实现物联网APP快速开发,海量边端应用管理. 0 引言 当前,物联网技术正在推动人类社会从&quo ...

  5. 云图说|图解DGC:基于华为智能数据湖解决方案的一体化数据治理平台

    摘要:数据湖治理中心DGC,帮助企业快速构建从数据集成到数据服务的端到端智能数据系统,消除数据孤岛,统一数据标准,加快数据变现,实现数字化转型. 本文分享自华为云社区<[云图说]第232期 图解 ...

  6. 如何注册appuploader账号​

    如何注册appuploader账号​ 我们上一篇讲到appuploader的下载安装,要想使用此软件呢,需要注册账号才能使用,今​ 天我们来讲下如何注册appuploader账号来使用软件.​ 1.A ...

  7. 查询速度最高提升50倍!火山引擎ByteHouse在广告投放领域实践分享

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   据QuestMobile报告显示,移动互联网已经进入了下半场,在使用人数和使用时长方面已经没有明显增长,互联 ...

  8. Solon Web 开发:三、一个简单的 Web 模板项目(或示例)

    演示 web 程序的常用能力: 控制器.请求参数.参数校验.跳转 过滤器.全局异常处理 静态文件 动态模板 动态模板公共变量及控制器基类 日志 Json 渲染格式控制 模板下载: 打包成 jar ,可 ...

  9. Unable to find @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest

    test下的包名和java下的包名不一致会产生下面错误 java.lang.IllegalStateException: Unable to find a @SpringBootConfigurati ...

  10. 无法访问Docker 里的 mysql, redis

    [root@centos-linux jimmy]# firewall-cmd --state not running [root@centos-linux jimmy]# sysctl net.ip ...