你闺女也能看懂的插画版Kubernetes指南

原创  2016-06-30

作者 周小璐 译

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

(视频版建议在wifi环境下打开,土豪请随意)

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过上了幸福的生活。


原文链接:https://deis.com/blog/2016/kubernetes-illustrated-guide/

转 Kubernetes 入门 概念理解的更多相关文章

  1. Kubernetes重要概念理解

    Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ...

  2. 十分钟带你理解Kubernetes核心概念

    什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...

  3. 后端技术杂谈11:十分钟理解Kubernetes核心概念

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 本文转自 https://github.com/h2pl/Java-Tutorial 喜欢的 ...

  4. [转]十分钟带你理解Kubernetes核心概念

    本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...

  5. 容器技术研究-Kubernetes基本概念

    最近在研究容器技术,作为入门,基本概念必须搞明白,今天整理一下Kubernetes的基本概念. 一.什么是Kubernetes Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部 ...

  6. Kubernetes基本概念之Name和NameSpace

    在Kubernetes中,所有对象都会被指定一个唯一的Name和UID. 用户还可以指定一些不要求唯一性的数据附加到对象上,例如Label和Annotation. 1. Name Name是创建一个K ...

  7. 01 . 容器编排简介及Kubernetes核心概念

    Kubernetes简介 Kubernetes是谷歌严格保密十几年的秘密武器-Borg的一个开源版本,是Docker分布式系统解决方案.2014年由Google公司启动. Kubernetes提供了面 ...

  8. 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制

    今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...

  9. Kubernetes 核心概念

    什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...

随机推荐

  1. 升级华为s2016

    Part 1 升级Bootrom 概述:启动启动菜单,用xmodem协议升级BootRom 升级的文件如下: wnm2.2.3-0004.zip :web网管zip压缩包文件. S2008_16-VR ...

  2. SpringMVC Controller配置方法有哪几种

    第一种 URL对应Bean 如果要使用此类配置方式,需要在XML中做如下样式配置 <!-- 表示将请求的URL和Bean名字映射--> <bean class="org.s ...

  3. BIO、NIO和AIO的区别(简明版)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6543960.html 一:事件分离器 在IO读写时,把 IO请求 与 读写操作 分离调配进行,需要用到事件分离 ...

  4. wwindows文件放入linux后多出换行符

    将 windows文件移到linux系统下会在文件行末尾多了一个换行符^M 使用命令cat -v tmp.c可以看到每行后边有^M字符 为了解决这个问题,我们用如下命令:touch love_tmp. ...

  5. C#匿名对象在其它方法体内怎么取到相应的值(不想建立对应的类并转化的情况下)?

    public object AnonymousObj() { ", Message = "OK", Data = new {...} } } public void Ot ...

  6. JUC-Condition和Lock实践-线程按序交替执行

    编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A.B.C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示.如:ABCABCABC…… 依次递归 这里只使用c ...

  7. linux下kerberos教程

    一.kerberos介绍 Kerberos这一名词来源于希腊神话“三个头的狗——地狱之门守护者”系统设计上采用客户端/服务器结构与DES加密技术,并且能够进行相互认证,即客户端和服务器端均可对对方进行 ...

  8. POJ1013 称硬币

    题目链接:http://poj.org/problem?id=1013 题目大意 有12枚硬币.其中有11枚真币和1枚假币.假币和真币重量不同,但不知道假币比真币轻还是重.现在,用一架天平称了这些币三 ...

  9. selenium的运行时异常

    selenium这个库是一个伟大的库,它赋予了程序员控制浏览器的能力.但是如果不理解这个库的设计上的一些哲学,就会遇到很多问题. selenium支持多种浏览器,但是这些浏览器里面,只有firefox ...

  10. 进阶之路(基础篇) - 004 I/O的模拟量输出

    /********************************* 代码功能:某输出模拟量 使用函数: analogWrite(引脚号,模拟量); //调用8位AD 创作时间:2016*10*08 ...