V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AlaudaCloud
V2EX  ›  Docker

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

  •  
  •   AlaudaCloud · 2016-07-05 13:01:22 +08:00 · 3986 次点击
    这是一个创建于 3074 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    视频链接:http://v.qq.com/page/b/3/1/b0310drhj31.html

    Hope You Enjoy The Story~

    有一天,女儿来书房学( dao )习( luan ),学够了就开始看电脑上的东西,看到屏幕上的 Kubernetes 就开始问我:『亲爱的芭比,什么是 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/

    6 条回复    2016-07-05 20:55:00 +08:00
    DingJZ
        1
    DingJZ  
       2016-07-05 13:17:53 +08:00
    宝宝心里苦...并不是很想听这个故事
    AlaudaCloud
        2
    AlaudaCloud  
    OP
       2016-07-05 13:48:01 +08:00
    @DingJZ 为什么不想听呢?
    v2014
        3
    v2014  
       2016-07-05 13:51:31 +08:00
    写 php 的果然厉害
    panlilu
        4
    panlilu  
       2016-07-05 13:58:40 +08:00
    最近正打算上 Kubernetes ,但是这个故事让人听了一脸懵逼。。
    rainysia
        5
    rainysia  
       2016-07-05 13:59:52 +08:00
    以前调研 kubernetes, 后来上了 mesos+marathon, 现在有 swarm 了
    yeyeye
        6
    yeyeye  
       2016-07-05 20:55:00 +08:00
    如果说主题有 10 个图片 一次刷新只会出现 5 个图片 另外随机 5 个图片是显示不出来的 再刷新 又是随机的显示 5 个
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5873 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:38 · PVG 10:38 · LAX 18:38 · JFK 21:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.