原文地址:https://www.cnblogs.com/kouryoushine/articles/8007648.html

是根据一个视频翻译过来的,比较形象

编者按:Matt Butcher 是 Deis 的平台架构师,热爱哲学,咖啡和精雕细琢的代码。有一天女儿走进书房问他什么是 Kubernetes,于是就有了这本插画版的 Kubernetes 指南,讲述了勇敢的 Phippy(一个 PHP 应用),在 Kubernetes 的冒险故事,满满的父爱有木有!

  某一天

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

  我回答她:『Kubernetes 是一个开源的 Docker 容器编排系统,它可以调度计算集群的节点,动态管理上面的作业,保证它们按用户期望的状态运行。通过使用「labels」和「pods」的概念,Kubernetes 将应用按逻辑单元进行分组,方便管理和服务发现。』

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

  给孩子的插画版 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. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇06:移动版优化指南》--本系列完结

    6.移动版优化指南 概述: 移动设备不同于目前的高端设备(Wii.Xbox 360和PS3),市场上的手机硬件是很有限的,并且所有的移动设备都是不一样的.像Adroid手机,由于品牌和出厂年限的不同, ...

  3. ReadHub项目Kotlin版开发指南(三、MVP架构)

    ReadHub项目Kotlin版转换指南(一.环境搭建) ReadHub项目Kotlin版转换指南(二.数据库和网络请求) ReadHub项目Kotlin版转换指南(三.MVP架构) Android ...

  4. Vue精简版风格指南

    前面的话 Vue官网的风格指南按照优先级(依次为必要.强烈推荐.推荐.谨慎使用)分类,且代码间隔较大,不易查询.本文按照类型分类,并对部分示例或解释进行缩减,是Vue风格指南的精简版 组件名称 [组件 ...

  5. <进阶版>Markdown指南

    有道云笔记内置Markdown编辑器和使用指南. “进阶版”有道云笔记Markdown指南,教你如何进一步掌握待办.清单.流程图和甘特图. 0 待办和清单 待办事项和清单在日常工作.生活中经常被使用. ...

  6. Moon.Orm 5.0(MQL版)使用指南及代码生成器新版发布

    相关博文1)Moon.Orm 5.0 (MQL版) 配置说明; 2)Moon.Orm 5.0 (MQL版) 版本维护及下载(跟踪发布); 3)Moon.Orm 5.0系列文章;  4)Moon.Orm ...

  7. 这个接口管理平台 eoLinker 开源版部署指南你一定不想错过

    本文主要内容是讲解如何在本地部署eoLinker开源版. 环境要求 1.PHP 5.5+ / PHP7+(推荐) 2.Mysql 5.5+ / Mariadb 5.5+ 3.Nginx(推荐) / A ...

  8. 腾讯云TDSQL MySQL版 - 开发指南 二级分区

    TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...

  9. 腾讯云TDSQL MySQL版 - 开发指南 分布式事务

    由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...

随机推荐

  1. Spring Security 学习笔记-securityContext过滤器过滤链学习

    web.xml配置委托代理filter,filter-name默认与filter bean的名字保持一致. <filter> <filter-name>springSecuri ...

  2. 【37.48%】【hdu 2587】How far away ?(3篇文章,3种做法,LCA之树上倍增)

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  3. phpcms V9自定义分页函数

    大家做网站的时候,可能很多时候分页样式都得根据模板的要求来控制的,这时很多人都会去修改全局文件phpcms\libs\functions\global.func.php里的pages()函数,这样问题 ...

  4. MFC 获取本机IP、网络ip和物理地址

    获取本机Ip CString CNet::GetLocalIP() { WSADATA wsaData; , ), &wsaData); ) { return ""; } ...

  5. RabbitMQ之pika模块

    发布/订阅 系统 send.py import pika import time s_conn = pika.BlockingConnection(pika.ConnectionParameters( ...

  6. CUP计算资源争抢通过IIS启用处理器关联解决

    由于业务的复杂性,我们在客户环境部署的时候,采用的是预装好在一台机器然后再把机器安装到客户环境,所以为了简单方便,我们把所有的服务都安装到一台机器上面了. 在正常的使用过程中是没有任何问题的.但是当有 ...

  7. 【Jenkins】pipeline-hello-world项目

    1.New Item 2.Pipeline Definition 3.Build Error 4.Solution 5.Console Output

  8. 错误 137 (net::ERR_NAME_RESOLUTION_FAILED):未知错误

    上午装了一个软件(APMServ 5.2.6) 1.点击启动Apache不成功,mysql却成功了.后来知晓是80端口冲突的问题 2.当时却不知道,就鬼使神差的   点击了  边上的  解决冲突问题 ...

  9. 想突破学习瓶颈,为什么要认真的学一下Dubbo?

    今天有学生在问,在学习dubbo的时候遇到瓶颈了怎么办,一些东西就感觉就在那里,但是,就是碰不到,摸不着,陷入了迷茫,今天在这里,就跟大家讲一下怎么突破这个瓶颈 先自我介绍一下哈,我是鲁班学院的周瑜老 ...

  10. CompositePattern(组合模式)-----Java/.Net

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...