点击蓝色“程序猿DD”关注我

回复“资源”获取独家整理的学习资料!

来源:https://juejin.im/post/5d1b2a656fb9a07edc0b7058



献给所有试图向孩子们解释软件工程的家长。


很久很久以前,有一个叫 Phippy 的应用程序。她是一个简单的应用程序,由 PHP 编写且只有一个页面。她住在一个需要和其他可怕的应用程序分享环境的主机中,她不认识这些应用程序并且不愿意和他们来往。她希望她能拥有一个属于自己的环境:只有她自己和她可以称之为家的 Web 服务器。


每个应用程序都有个运行所依赖的环境。对于 PHP 应用程序来说,这个环境可能包括 Web 服务器,一个可读文件系统和 PHP 引擎本身。


有一天,一只善良的鲸鱼出现了。他建议小 Phippy 住在容器里,这样可能会更快乐。所以应用程序 Phippy 迁移到了容器中。这个容器很棒,但是……它有点像一个漂浮在大海中央的豪华起居室。


容器提供了一个独立的环境,应用程序可以在这个环境中运行。但是这些孤立的容器常常需要被管理并与外面的世界连接。对于孤立的容器而言,共享文件系统、网络通信、调度、负载均衡和分发都是要面对的挑战。


鲸鱼耸了耸肩。“对不起,孩子。”他说着,消失在海面下。就在 Phippy 甚至开始绝望时,一位驾驶着巨轮的船长出现在海平线上。这艘船由几十个绑在一起的木筏组成,但从外面来看,它就像一艘巨轮。

“你好呀,这位 PHP 应用程序朋友。我是 Kube 船长。”睿智的老船长说。


“Kubernetes” 在希腊语中是船长的意思。我们可以从这个单词中得到 Cybernetic 和 Gubernatorial 这两个词组。Kubernetes 项目专注于构建一个健壮的平台,用于在生产环境中运行数千个容器。


“我是 Phippy。”小应用程序说。

“很高兴认识你。”船长一边说,一边在她身上贴上了一张标有姓名的标签。


Kubernetes 使用标签作为“名牌”来标识事物。它可以根据这些标签进行查询。标签是开放性的:你可以用他们来表示角色、稳定性或其他重要的属性。


船长建议应用程序把她的容器搬到船上的一个船舱中。Phippy 很高兴地把她的容器搬到 Kube 船长巨轮的船舱内。Phippy 觉得这里像家一样。


在 Kubernetes 中,Pod 代表一个可运行的工作单元。通常,你会在 Pod 中运行一个容器。但是对于一些容器紧密耦合的情况,你可以选择在同一个 Pod 中运行多个容器。Kubernetes 负责将你的 Pod 和网络以及 Kubernetes 的其余环境相连。


Phippy 有一些不同寻常的兴趣,她很喜欢遗传学和绵羊。所以她问船长:“如果我想克隆我自己,是否可以根据需求克隆任意次数呢?”

“这很容易。”船长说。船长把 Phippy 介绍给了 Replication Controller。


Replication Controller 提供一种管理任意数量 Pod 的方法。一个 Replication Controller 包含一个 Pod 模板,该模板可以被复制任意次数。通过 Replication Controller,Kubernetes 将管理 Pod 的生命周期,包括伸缩、滚动更新和监控。


无数个日夜,小应用程序在她的船舱中与她的复制品相处十分愉快。但与自己为伍并没有所说的那么好……即使你拥有 N 个自己的克隆体。

Kube 船长慈祥地笑了笑:“我正好有一样东西。”

他刚开口,在 Phippy 的 Replication Controller 和船的其他部分之间打开了一条隧道。Kube 船长笑着说:“即使你的复制品来了又去,这条隧道始终会留在这里,你可以通过它发现其他 Pod,其他 Pod 也可以发现你!”


服务告知 Kubernetes 环境的其余部分(包括其他 Pod 和 Replication Controller)你的应用程序包含了哪些服务,当 Pod 来来往往,服务的 IP 地址和端口始终保持不变。其他应用程序可以通过 Kurbenetes 服务发现找到你的服务。


多亏了这些服务,Phippy 开始探索船的其他部分。不久之后,Phippy 遇到了 Goldie。他们成了最好的朋友。有一天,Goldie 做了一件不同寻常的事。她送给 Phippy 一件礼物。Phippy 看了礼物一眼,悲伤的泪水夺眶而出。

“你为什么这么伤心呢?”Goldie 问道。

“我喜欢这个礼物,但我没有地方可以放它!”Phippy 抽噎道。

但 Goldie 知道该怎么做。“为什么不把它放入卷中呢?”


卷表示容器可以访问和存储信息的位置。对于应用程序,卷显示为本地文件系统的一部分。但卷可以由本地存储、Ceph、Gluster、持久性块存储,以及其他存储后端支持。

Phippy 喜欢在 Kube 船长的船上生活,她很享受来自新朋友的陪伴(Goldie 的每个克隆人都同样令人愉悦)。但是,当她回想起在可怕的主机度过的日子,她想知道她是否也可以拥有一点自己的隐私。

“这听起来像是你所需要的,”Kube 船长说,“这是一个命名空间。”


命名空间是 Kubernetes 内部的分组机制。服务、Pod、Replication Controller 和卷可以在命名空间内部轻松协作,但命名空间提供了与集群其他部分一定程度的隔离。

Phippy 与她的新朋友一起乘坐 Kube 船长的巨轮航行于大海之上。她经历了许多伟大的冒险,但最重要的是,Phippy 找到了自己的家。

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


译者:江五渣
链接:https://juejin.im/post/5d1b2a656fb9a07edc0b7058


推荐阅读

  • 要想下班早?插件少不了!

  • 微服务之旅:从 Netflix OSS 到 Istio Service Mesh

  • 如何避免Java中的回调“地狱”

  • Redis作者的公开信:开源维护者的挣扎和无奈

  • 一文了解web无状态会话token技术JWT


活动介绍:自律到极致-人生才精致:第10期

活动奖励:《Spring 5企业级开发实战》、我的星球会员

扫描下面二维码签到参与

关注我,加个星标,不忘签到哦~

2019

与大家聊聊技术人的斜杠生活

点一点“阅读原文”小惊喜在等你

史上最易懂的Kubernetes儿童插图指南相关推荐

  1. 史上最易懂的 Kubernetes 儿童插图指南

    献给所有试图向孩子们解释软件工程的家长. 很久很久以前,有一个叫 Phippy 的应用程序.她是一个简单的应用程序,由 PHP 编写且只有一个页面.她住在一个需要和其他可怕的应用程序分享环境的主机中, ...

  2. Java环形队列(史上最易懂)

    Java环形队列 史上最易懂 1.什么是队列 2.数组模拟队列 3.Java代码实现 3.1环形队列类 3.2代码测试类 3.3完整Java代码 3.4输出结果 1.什么是队列 队列是一种数据结构,用 ...

  3. 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解

    React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...

  4. python bool 转vc int_史上最全的 Python 3 类型转换指南

    史上最全的 Python 3 类型转换指南-1.jpg (13.76 KB, 下载次数: 0) 2018-8-21 17:35 上传 int 支持转换为 int 类型的,仅有 float.str.by ...

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

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

  6. SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(5)

    [十二章]数据类型 介绍 MySQL的数据分为以下几个大类: String Types 字符串类型 Numeric Types 数字类型 Date and Time Types 日期和时间类型 Blo ...

  7. 跨域解决方案(史上最易懂)

    跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是,通过设置中间件把跨域的请求转发一下,其实就是反向代理, 比如 http://1.2. ...

  8. SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师

    目录 第一部分:基础--增删查改 [第一章]做好准备 Getting Started (时长25分钟) [第二章]在单一表格中检索数据 Retrieving Data From a Single Ta ...

  9. springboot 创建地址_这可能是史上最易懂的 Spring Boot 入门教程

    目录 一.Spring Boot 是什么 二.为什么要使用 Spring Boot 三.快速入门 3.1 创建 Spring Boot 项目 3.2 项目结构 3.3 引入 Web 依赖 3.4 编写 ...

最新文章

  1. amazon mws api 获取所有产品_Amazon’s Choice是什么?Amazon's Choice标签全解读
  2. Java 垃圾回收机制概念梳理
  3. mysql select查询语句_mysql的select查询语句
  4. BZOJ 1683.City skyline 城市地平线
  5. grep 显示包含两个关键字_linux三剑客之-grep
  6. 怎样让手中的钱成为生财工具
  7. [导入]从函数RND的使用想到的!
  8. 面试官:你能说清楚分布式锁,进程锁,线程锁的区别吗?
  9. VScode配置C/C++环境以及stdafx.h报错解决方法
  10. linux和win双系统删除,Windows+Linux 双系统的卸载方法
  11. FPGA时钟篇(二) 7系列clock region详解
  12. [树的直径 树形DP] UOJ #11【UTR #1】ydc的大树
  13. U盘无法格式化(提示U盘文件系统变为了RAW格式)【一般应用】
  14. 产业分析:中国电竞行业研究
  15. Hibernate之load和get的区别
  16. 前端开发学习笔记04---JavaScript
  17. 面试复习题--jvm的细枝末节
  18. vuex vue-router
  19. 探讨网站推广方式之论坛推广 [
  20. python script爬虫_人肉python脚本爬虫

热门文章

  1. docker centos7容器 安装ssh服务
  2. cve-2019-1821 思科 Cisco Prime 企业局域网管理器 远程代码执行 漏洞分析
  3. centos7 使用无线wifi连接
  4. metasploit 快速入门(二)信息收集和扫描-续
  5. Linux C编程--string.h函数解析
  6. AWS之EC2搭建WordPress博客
  7. 启动controller节点nova组件服务,报错ERROR 13
  8. 计算机的工作原理题,计算机工作原理试题期中试卷
  9. tox.ConfigError: ConfigError: substitution key 'posargs' not found
  10. python主要用于后端开发还是前端,Django是用于前端还是后端?