史上最易懂的Kubernetes儿童插图指南
点击蓝色“程序猿DD”关注我
回复“资源”获取独家整理的学习资料!
来源:https://juejin.im/post/5d1b2a656fb9a07edc0b7058
![](/assets/blank.gif)
献给所有试图向孩子们解释软件工程的家长。
![](/assets/blank.gif)
很久很久以前,有一个叫 Phippy 的应用程序。她是一个简单的应用程序,由 PHP 编写且只有一个页面。她住在一个需要和其他可怕的应用程序分享环境的主机中,她不认识这些应用程序并且不愿意和他们来往。她希望她能拥有一个属于自己的环境:只有她自己和她可以称之为家的 Web 服务器。
![](/assets/blank.gif)
每个应用程序都有个运行所依赖的环境。对于 PHP 应用程序来说,这个环境可能包括 Web 服务器,一个可读文件系统和 PHP 引擎本身。
![](/assets/blank.gif)
有一天,一只善良的鲸鱼出现了。他建议小 Phippy 住在容器里,这样可能会更快乐。所以应用程序 Phippy 迁移到了容器中。这个容器很棒,但是……它有点像一个漂浮在大海中央的豪华起居室。
![](/assets/blank.gif)
容器提供了一个独立的环境,应用程序可以在这个环境中运行。但是这些孤立的容器常常需要被管理并与外面的世界连接。对于孤立的容器而言,共享文件系统、网络通信、调度、负载均衡和分发都是要面对的挑战。
![](/assets/blank.gif)
鲸鱼耸了耸肩。“对不起,孩子。”他说着,消失在海面下。就在 Phippy 甚至开始绝望时,一位驾驶着巨轮的船长出现在海平线上。这艘船由几十个绑在一起的木筏组成,但从外面来看,它就像一艘巨轮。
“你好呀,这位 PHP 应用程序朋友。我是 Kube 船长。”睿智的老船长说。
![](/assets/blank.gif)
“Kubernetes” 在希腊语中是船长的意思。我们可以从这个单词中得到 Cybernetic 和 Gubernatorial 这两个词组。Kubernetes 项目专注于构建一个健壮的平台,用于在生产环境中运行数千个容器。
![](/assets/blank.gif)
“我是 Phippy。”小应用程序说。
“很高兴认识你。”船长一边说,一边在她身上贴上了一张标有姓名的标签。
![](/assets/blank.gif)
Kubernetes 使用标签作为“名牌”来标识事物。它可以根据这些标签进行查询。标签是开放性的:你可以用他们来表示角色、稳定性或其他重要的属性。
![](/assets/blank.gif)
船长建议应用程序把她的容器搬到船上的一个船舱中。Phippy 很高兴地把她的容器搬到 Kube 船长巨轮的船舱内。Phippy 觉得这里像家一样。
![](/assets/blank.gif)
在 Kubernetes 中,Pod 代表一个可运行的工作单元。通常,你会在 Pod 中运行一个容器。但是对于一些容器紧密耦合的情况,你可以选择在同一个 Pod 中运行多个容器。Kubernetes 负责将你的 Pod 和网络以及 Kubernetes 的其余环境相连。
![](/assets/blank.gif)
Phippy 有一些不同寻常的兴趣,她很喜欢遗传学和绵羊。所以她问船长:“如果我想克隆我自己,是否可以根据需求克隆任意次数呢?”
“这很容易。”船长说。船长把 Phippy 介绍给了 Replication Controller。
![](/assets/blank.gif)
Replication Controller 提供一种管理任意数量 Pod 的方法。一个 Replication Controller 包含一个 Pod 模板,该模板可以被复制任意次数。通过 Replication Controller,Kubernetes 将管理 Pod 的生命周期,包括伸缩、滚动更新和监控。
![](/assets/blank.gif)
无数个日夜,小应用程序在她的船舱中与她的复制品相处十分愉快。但与自己为伍并没有所说的那么好……即使你拥有 N 个自己的克隆体。
Kube 船长慈祥地笑了笑:“我正好有一样东西。”
他刚开口,在 Phippy 的 Replication Controller 和船的其他部分之间打开了一条隧道。Kube 船长笑着说:“即使你的复制品来了又去,这条隧道始终会留在这里,你可以通过它发现其他 Pod,其他 Pod 也可以发现你!”
![](/assets/blank.gif)
服务告知 Kubernetes 环境的其余部分(包括其他 Pod 和 Replication Controller)你的应用程序包含了哪些服务,当 Pod 来来往往,服务的 IP 地址和端口始终保持不变。其他应用程序可以通过 Kurbenetes 服务发现找到你的服务。
![](/assets/blank.gif)
多亏了这些服务,Phippy 开始探索船的其他部分。不久之后,Phippy 遇到了 Goldie。他们成了最好的朋友。有一天,Goldie 做了一件不同寻常的事。她送给 Phippy 一件礼物。Phippy 看了礼物一眼,悲伤的泪水夺眶而出。
“你为什么这么伤心呢?”Goldie 问道。
“我喜欢这个礼物,但我没有地方可以放它!”Phippy 抽噎道。
但 Goldie 知道该怎么做。“为什么不把它放入卷中呢?”
![](/assets/blank.gif)
卷表示容器可以访问和存储信息的位置。对于应用程序,卷显示为本地文件系统的一部分。但卷可以由本地存储、Ceph、Gluster、持久性块存储,以及其他存储后端支持。
Phippy 喜欢在 Kube 船长的船上生活,她很享受来自新朋友的陪伴(Goldie 的每个克隆人都同样令人愉悦)。但是,当她回想起在可怕的主机度过的日子,她想知道她是否也可以拥有一点自己的隐私。
“这听起来像是你所需要的,”Kube 船长说,“这是一个命名空间。”
![](/assets/blank.gif)
命名空间是 Kubernetes 内部的分组机制。服务、Pod、Replication Controller 和卷可以在命名空间内部轻松协作,但命名空间提供了与集群其他部分一定程度的隔离。
Phippy 与她的新朋友一起乘坐 Kube 船长的巨轮航行于大海之上。她经历了许多伟大的冒险,但最重要的是,Phippy 找到了自己的家。
所以 Phippy 从此过上了幸福的生活。
![](/assets/blank.gif)
译者:江五渣
链接:https://juejin.im/post/5d1b2a656fb9a07edc0b7058
推荐阅读:
要想下班早?插件少不了!
微服务之旅:从 Netflix OSS 到 Istio Service Mesh
如何避免Java中的回调“地狱”
Redis作者的公开信:开源维护者的挣扎和无奈
一文了解web无状态会话token技术JWT
活动介绍:自律到极致-人生才精致:第10期
活动奖励:《Spring 5企业级开发实战》、我的星球会员
扫描下面二维码签到参与
关注我,加个星标,不忘签到哦~
2019
与大家聊聊技术人的斜杠生活
点一点“阅读原文”小惊喜在等你
史上最易懂的Kubernetes儿童插图指南相关推荐
- 史上最易懂的 Kubernetes 儿童插图指南
献给所有试图向孩子们解释软件工程的家长. 很久很久以前,有一个叫 Phippy 的应用程序.她是一个简单的应用程序,由 PHP 编写且只有一个页面.她住在一个需要和其他可怕的应用程序分享环境的主机中, ...
- Java环形队列(史上最易懂)
Java环形队列 史上最易懂 1.什么是队列 2.数组模拟队列 3.Java代码实现 3.1环形队列类 3.2代码测试类 3.3完整Java代码 3.4输出结果 1.什么是队列 队列是一种数据结构,用 ...
- 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解
React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...
- python bool 转vc int_史上最全的 Python 3 类型转换指南
史上最全的 Python 3 类型转换指南-1.jpg (13.76 KB, 下载次数: 0) 2018-8-21 17:35 上传 int 支持转换为 int 类型的,仅有 float.str.by ...
- K3s初探:Rancher架构师带你尝鲜史上最轻量Kubernetes发行版
发布不到两天,GitHub上Star数已近3000,这个业界大热的.史上最轻量的开源Kubernetes发行版,你试过了没? Rancher资深架构师来教你走出尝鲜第一步!使用教程在此! 前 言 昨天 ...
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(5)
[十二章]数据类型 介绍 MySQL的数据分为以下几个大类: String Types 字符串类型 Numeric Types 数字类型 Date and Time Types 日期和时间类型 Blo ...
- 跨域解决方案(史上最易懂)
跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是,通过设置中间件把跨域的请求转发一下,其实就是反向代理, 比如 http://1.2. ...
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师
目录 第一部分:基础--增删查改 [第一章]做好准备 Getting Started (时长25分钟) [第二章]在单一表格中检索数据 Retrieving Data From a Single Ta ...
- springboot 创建地址_这可能是史上最易懂的 Spring Boot 入门教程
目录 一.Spring Boot 是什么 二.为什么要使用 Spring Boot 三.快速入门 3.1 创建 Spring Boot 项目 3.2 项目结构 3.3 引入 Web 依赖 3.4 编写 ...
最新文章
- amazon mws api 获取所有产品_Amazon’s Choice是什么?Amazon's Choice标签全解读
- Java 垃圾回收机制概念梳理
- mysql select查询语句_mysql的select查询语句
- BZOJ 1683.City skyline 城市地平线
- grep 显示包含两个关键字_linux三剑客之-grep
- 怎样让手中的钱成为生财工具
- [导入]从函数RND的使用想到的!
- 面试官:你能说清楚分布式锁,进程锁,线程锁的区别吗?
- VScode配置C/C++环境以及stdafx.h报错解决方法
- linux和win双系统删除,Windows+Linux 双系统的卸载方法
- FPGA时钟篇(二) 7系列clock region详解
- [树的直径 树形DP] UOJ #11【UTR #1】ydc的大树
- U盘无法格式化(提示U盘文件系统变为了RAW格式)【一般应用】
- 产业分析:中国电竞行业研究
- Hibernate之load和get的区别
- 前端开发学习笔记04---JavaScript
- 面试复习题--jvm的细枝末节
- vuex vue-router
- 探讨网站推广方式之论坛推广 [
- python script爬虫_人肉python脚本爬虫
热门文章
- docker centos7容器 安装ssh服务
- cve-2019-1821 思科 Cisco Prime 企业局域网管理器 远程代码执行 漏洞分析
- centos7 使用无线wifi连接
- metasploit 快速入门(二)信息收集和扫描-续
- Linux C编程--string.h函数解析
- AWS之EC2搭建WordPress博客
- 启动controller节点nova组件服务,报错ERROR 13
- 计算机的工作原理题,计算机工作原理试题期中试卷
- tox.ConfigError: ConfigError: substitution key 'posargs' not found
- python主要用于后端开发还是前端,Django是用于前端还是后端?