有一天女儿走进书房问他什么是Kubernetes,于是就有了这本插画版的Kubernetes 指南,讲述了勇敢的 Phippy(一个PHP应用),在Kubernetes的冒险故事。

Hope You Enjoy The Story~

有一天,女儿走进书房问我:「亲爱的爸爸,什么是Kubernetes呢?」

我回答她:「Kubernetes是一个开源的Docker容器编排系统,它可以调度计算集群的节点,动态管理上面的作业,保证它们按用户期望的状态运行。

通过使用「labels」和「pods」的概念,Kubernetes将应用按逻辑单元进行分组,方便管理和服务发现。」

女儿更疑惑了……于是就有了这个故事.


很久很久以前,有一个叫Phippy的PHP应用,她很单纯,只有一个页面。她住在一个托管服务里,周围还有很多可怕的应用,她都不认识,也不想去认识,但是他们却要共享这里的环境。

所以,她一直都希能有一个属于自己的环境:一个可以称作home的webserver。


每个应用的运行都要依赖一个环境,对于一个 PHP 应用来说,这个环境包括了一个webserver,一个可读的文件系统和 PHP 的 engine。


有一天,一只可爱的鲸鱼拜访了 Phippy,他建议 Phippy 住在容器里。Phippy 听从了鲸鱼的建议搬家了,虽然这个容器看起来很好,但是……怎么说呢,就像是漂浮在海上的一个小房间一样,还是没有家的感觉。


不过容器倒是为应用提供了隔离的环境,在这个环境里应用就能运行起来。但是这些相互隔离的容器需要管理,也需要跟外面的世界沟通。共享的文件系统,网络,调度,负载均衡和资源分配都是挑战。

「抱歉……孩子……」鲸鱼耸耸肩,一摇尾消失在了海平面下……Phippy还没有来得及失望,就看到远方驶来一艘巨轮,掌舵的老船长非常威风。这艘船乍一看就是大了点,等到船走近了,Phippy才发现船体两边挂满了皮筏。

老船长用充满智慧的语气对Phippy说:「你好,我是Kube船长」。


「Kubernetes」是希腊语中的「船长」,后来的『Cybernetic』和『Gubernatorial』这两个词就是从 Kubernetes 衍生来的。Kubernetes项目由Google发起,旨在为生产环境中成千上万的容器,构建一个健壮的平台。


「您好,我是Phippy。」
「很高兴认识你。」船长边说,边在Phippy身上放了一个name tag。


Kubernetes使用label作为『nametag』来区分事物,还可以根据label来查询。label是开放式的:可以根据角色,稳定性或其它重要的特性来指定。

Kube船长建议Phippy可以把她的容器搬到船上的pod里,Phippy很高兴地接受了这个提议,把容器搬到了Kube的大船上。Phippy感觉自己终于有家了。

在Kubernetes中,pod代表着一个运行着的工作单元。通常,每个pod中只有一个容器,但有些情况下,如果几个容器是紧耦合的,这几个容器就会运行在同一个pod中。Kubernetes承担了pod与外界环境通信的工作。


Phippy对这一切都感到很新奇,同时她也有很多与众不同的关注点:『如果我想要复制自己该怎么做呢?按需的……任意次数的可以吗?』

『很简单。』船长说道,接着就给Phippy介绍起了replication controller。


Replication controller提供了一种管理任意数量pod的方式。一个replication controller包含了一个pod模板,这个模板可以被不限次数地复制。通过replication controller,Kubernetes可以管理pod的生命周期,包括扩/缩容,滚动部署和监控等功能。


Phippy就这样在船上和自己的副本愉快地生活了好多天。但是每天只能面对自己的副本,这样的生活也太孤单了。
Kube船长慷慨地笑道:『我有好东西给你。』
说着,Kube船长就在Phippy的replication controller和船上其它地方之间建了一个隧道:『就算你们四处移动,这个隧道也会一直待在这里,它可以帮你找到其它pod,其它pod也可以找到你。』


service可以和Kubernetes环境中其它部分(包括其它pod和replication controller)进行通信,告诉它们你的应用提供什么服务。Pod 可以四处移动,但是service 的 IP 地址和端口号是不变的。而且其它应用可以通过Kubernetes的服务发现找到你的service。

有了service,Phippy 终于敢去船上其它地方去玩了,她很快就有了新朋友Goldie。有一天,Goldie送了Phippy一件礼物,没想到Phippy只看了一眼就哭了。

『你怎么哭了?』Goldie问道。

『我太喜欢这个礼物了,可惜没地儿放……』Phippy都开始抽泣了。Goldie一听原来是这么回事,马上就告诉Phippy:『为什么不放在一个 volume 里呢?』

Volume 代表了一块容器可以访问和存储信息的空间,对于应用来说,volume是一个本地的文件系统。实际上,除了本地存储,Ceph、Gluster、Elastic Block Storage 和很多其它后端存储都可以作为 volume。


Phippy渐渐地爱上了船上的生活,她很享受和新朋友的相处(Goldie的每个pod副本也都很nice)。但是回想起以前的生活,她又在想是不是可以有一点点私人空间呢?

Kube船长很理解:『看起来你需要namespace。』


Namespace是Kubernetes内的分组机制。Service,pod,replication controller和volume可以很容易地和namespace配合工作,但是namespace为集群中的组件间提供了一定程度的隔离。

于是,在Kube船长的船上,Phippy和她的朋友们开始了海上的历险,最重要的是,Phippy找到了自己的家。

从此,Phippy过上了幸福的生活。

Kubernetes插画版理解---很有趣相关推荐

  1. 插画版Kubernetes指南

    Matt Butcher是Deis的平台架构师,热爱哲学,咖啡和精雕细琢的代码.有一天女儿走进书房问他什么是Kubernetes,于是就有了这本插画版的Kubernetes指南,讲述了勇敢的Phipp ...

  2. 插画版Kubernetes指南(小孩子也能看懂的kubernetes教程)

    插画版Kubernetes指南(小孩子也能看懂的kubernetes教程) 是根据一个视频翻译过来的,比较形象 编者按:Matt Butcher 是 Deis 的平台架构师,热爱哲学,咖啡和精雕细琢的 ...

  3. 插画版 Kubernetes 指南

    编者按:Matt Butcher 是 Deis 的平台架构师,热爱哲学,咖啡和精雕细琢的代码.有一天女儿走进书房问他什么是 Kubernetes,于是就有了这本插画版的 Kubernetes 指南,讲 ...

  4. 如何简单形象又有趣地讲解神经网络是什么?(知乎) 说的人很多,理解很充分_kebu12345678的博客-CSDN博客_神经网络知乎

    如何简单形象又有趣地讲解神经网络是什么?(知乎) 说的人很多,理解很充分_kebu12345678的博客-CSDN博客_神经网络知乎 如何简单形象又有趣地讲解神经网络是什么? - 知乎

  5. 你闺女都能看懂的 Kubernetes 插画指南!

    有一天,程序员问大师,什么是 Kubernetes? 大师说:"Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用 ...

  6. Apprenda发布Kubernetes商业版,PaaS、CaaS任君选择

    Apprenda发布了Kubernetes商业版,并提供在生产环境运行Kubernetes的企业级支持.通过对Kismatic(一家专注于Kubernetes部署和管理的公司)的收购,Apprenda ...

  7. 爬虫技术做到哪些很酷很有趣很有用的事情

    能利用爬虫技术做到哪些很酷很有趣很有用的事情? 准备学习python爬虫.各位大神都会用爬虫做哪些有趣的事情? 今天突然想玩玩爬虫,就提了这个问题.跟着YouTube上的一个tutor写了个简单的程序 ...

  8. 主流Kubernetes发行版梳理,看完就会选了

    Kubernetes的开源性质及其受欢迎程度催生了容器管理平台的许多不同发行版. 2014年,Kubernetes作为内部Google orchestrator Borg开源版本推出,目前已是最成功和 ...

  9. K3s初探:Rancher架构师带你尝鲜史上最轻量Kubernetes发行版

    发布不到两天,GitHub上Star数已近3000,这个业界大热的.史上最轻量的开源Kubernetes发行版,你试过了没? Rancher资深架构师来教你走出尝鲜第一步!使用教程在此! 前 言 昨天 ...

最新文章

  1. 60、IPv6配置实验之RIP
  2. centos6.5搭建lnmp环境
  3. 画图分析ehcach的缓存流程图
  4. 用Javascript滚动到页面底部,并能正确判断出页面已到底部的方法
  5. Python中函数式编程的学习感想~
  6. JavaScript高级程序设计(4)
  7. Egg教程_Egg.js视频教程免费分享
  8. matlab点在直线上运动,求助如何用matlab取出直线上的点
  9. rman备份mysql_rman备份与还原
  10. matlab生成面导出stl格式,导出建模文件到STL格式时需要注意的问题
  11. Druid连接池核心原理
  12. C语言或C++中不同类型指针所占内存大小
  13. 利用IPSec/L2TP代理上网
  14. Python-Seleium模拟登陆163邮箱
  15. Ptolemy 11-28
  16. 图书管理系统java+Oracle
  17. linux查询服务器品牌命令,查看linux服务器的品牌和型号
  18. uboot中ftd命令
  19. OC与swift相互调用
  20. 我的大数据学习知录(1)-Hadoop

热门文章

  1. JAVA服务器端发送邮件问题:Could not connect to SMTP host: smtp.qq.com, port: 465
  2. iQOO Neo7智能手机;索尼“地球蓝”LinkBuds S耳机;卡西欧多款40周年纪念款手表 | 科技新品...
  3. 微信定位精灵 android,微信定位精灵安卓版下载
  4. Case Study _均值方差模型 MatLab
  5. 2015.3.30第一次博客测试
  6. (java)socket全双工长连接通信实例
  7. Z-DArg-GR-pNA,113711-77-6
  8. java 从已知日期计算干支纪日_天干地支纪日怎么计算?
  9. ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看。
  10. Cardano(ADA), EOS, RChain(RHOC), Aeternity(AE) 都是极其好的币