东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

通俗易懂图解 Kubernetes

  • 2018-08-21
  • 本文字数:2743 字

    阅读完需:约 9 分钟

本文最初发表于 Daniel Lebrero 的个人站点,经原作者授权由 InfoQ 中文站翻译并分享。

Kubernetes(后文简称为 k8s)有自己的一套抽象机制和术语,但是借助一些想象力,可以将这些抽象与我们更加熟悉的概念联系起来。

我本来希望将其类比为香肠工厂,但令人遗憾的是,k8s 要比香肠更复杂,所以我只好将其类比为主题公园。

如下的内容都是基于谷歌 Kubernetes 引擎的,在其他的供应商中或者如果你自行运行 k8s 的话,有些概念可能会略有差异。

你是谁?

我们假设你是 Kubenelius Fizzbuzz,一位刚刚毕业的 MBA,擅长打包各种东西,你信心满满地要实现自己的想法:KubePark 主题公园。

计划有趣的游乐设施

为了启动 KubePark 这个工程,你需要为其规划有趣的游乐设施。于是,你决定每个吸引游客的景点都只需要填写一个如下图所示的模板(k8s deployment )即可。

这张图片表明 KubePark 有三个 1909 旋转木马。

1909 旋转木马是由两部分组成的:一个经典的旋转木马再加上一个棉花糖摊位。每个组成部分(k8s container )将会通过一个大箱子由无人机实现交付,一旦开箱就能立即组装好并运行起来。

每个景点都会使用栅栏包围起来,将其与其他景点隔离,这样某个景点的问题就不会传播到其他景点之中。但是景点各个组成部分则是不可分割的整体(k8s pod ),所以不会有障碍物或防火墙阻碍组件之间的交流和移动,避免破坏游客的体验(在 k8s 中,如果你想要共享文件的话,还是需要一点配置的)。

具有栅栏就意味着我们需要为游客规划入口(k8s containerPort )。在 1909 旋转木马中,将会首先经过一个棉花糖的摊位:在体验旋转木马的时候,如果还有一个蓬松的棉花糖,那将会带来更有趣的体验。

模板还会指定大小(k8s 内存)和电力(k8sCPU)的需求(k8s resources ),并将 1909 旋转木马标记(k8s labels )为旋转木马(carousel)、适宜儿童(kid friendly)和经典(classic)的景点。稍后我们将会看到如何使用这些信息。

在模板背后,有些东西我们在图片上没有标注出来,你还需要为每个组成部分编写维护指令(k8s probes )。你的员工会定期按照这些指令判断是否有某些组成部分需要替换。如果需要替换的话,维护人员会将有问题的组成部分直接化为灰烬,无人机将会运来另外一个新的大箱子作为替换。所以,不要花费力气试图修复它们,我们只需要替换整个棉花糖摊点或旋转木马就可以。在替换期间,景点会对游客关闭,即便景点中某些组成部分对用户可用也会如此:1909 旋转木马的体验包括必备的棉花糖和旋转木马,二者是不可分割的。

寻找地块将计划落地

有趣的游乐设施规划完成之后,接下来就该开工建设这个公园了。

你需要与土地的拥有者签订一个租赁合同(k8s node pool ):

这个包含了两个地块(k8s nodes ),每个地块有其大小(k8s memory)和发电机(k8s CPU)。需要注意该协议并不是针对两个特定的地块的,而是多个具备该特征的地块,土地拥有者要负责寻找这些地块。借助现代的运输机制,这些地块并不一定要相邻。

土地拥有者还需要保护对地块的访问,这是通过在每个地块周围安装带刺的铁丝网来实现的。

你还可以勾选“free disaster insurance”(k8s auto repair ))复选框:如果某个地块不可用的话,土地拥有者会将其替换为具有完全相同特质的另外一个地块。土地拥有者要负责查找并确定地块是否可用,并进行替换。

最后,协议提供的地块是带有标签的(同样是 k8s label ),这里的标签是“plains”和“Mediterranean weather”,即平整的地区并且是地中海气候。稍后我们将会看到如何使用该信息。

建造 KubePark

你的工作已经非常辛苦了,所以你会将公园建造的具体工作委托给一位控制人员。该员工会确保你在计划中规划的景点数量和类型始终都能无误地运转。

出乎意料的是,慷慨的土地拥有者还为你提供了控制交通管制塔(k8s cluster master ),以便于让控制人员容身并且还会负责控制塔所需的维护和改善工作。这样我们要关心的事情就又少了一件!

现在有了控制塔,再加上建造游乐设施的计划,你的员工就可以决定在哪个地块上构建每个景点了,需要确保地块上有足够的空间和电力满足景点的运转所需(k8s resource quality of service )。

每个景点始终都能得到所需的最少电力(k8s CPU),并且拥有的电力量不会超过规定的最大值(否则的话,将会造成短路并烧坏线路),如果地块上还有空闲电力的话,它能够得到额外的电力(超过最小值,但是不会大于最大值)。如果没有空闲的话,该景点的运行会变得更加缓慢。

康茄舞会(Conga Dancing Party Line)有一个最小和最大的规模(k8s memory)。它始终能保证达到指定的最小值,但是如果大于最大值的话,它就会关闭。我们大家都知道,太长的康茄舞通常都会以骚乱收场。如果地块有空闲的话,它会得到额外的空间(超过最小值),但是如果没有空间的话,超过最小空间的某个景点将会关闭。交通管制塔会决定要将哪个景点关闭,它可能是康茄舞会景点,也有可能是其他的。

现在有了足够的空间和电力,团队在创建你规划的景点方面已经没有任何问题了。主题公园已经准备就绪了。

KubePark 开业

为了帮助游客到达每个景点,你发现最简单的方式就是使用带不同颜色的路标(k8s nodePort 服务),如下所示:

图片来源:来自 Cmglee 伦敦维多利亚车站地面线

在这里,我们想要使用蓝色标线将游客导引至带有“classic”标签的景点,绿色标线将用户导引至带有“roller coaster”标签的景点。按照你的需要,可以进行具体化或泛化,如果必要的话,还可以将多个标签组合起来。

路标不仅仅是给游客用的,你的内部员工也可以使用它,你还可以创建仅仅对内部员工可见的路径(k8s clusterIP 服务),例如到员工食堂的路径。

由于地块都被带刺的铁丝网围着,所以你需要想办法让游客进入公园。有种方案是在铁丝网上打个洞,带颜色的路径一直延伸到这个洞上(k8s loadBalancer 服务),但是这意味你要以某种方式保护每个带颜色的路径。

所以,作为替代方案,你会选择带有准入的大门(k8s ingress )。土地的拥有者提供一些标准的大门,所以你的员工无需维护它们,它们也不会使用地块上的空间和电力。土地的拥有者还会负责构建从大门到地块的立交桥。未来,你可能还会需要更加专业化的准入大门(k8s Traefik )。

现在,你可以给准入大门的员工一些指令:

  1. 带有六岁以下儿童的游客要使用红色标线;
  2. 带有青少年的游客要使用绿色标线;
  3. ……

启动并让它运转起来

一切就绪之后,你的公园就可以运行起来了:

到此为止吗?

如你所愿!

关于 Kubernetes 的扩展性、污染(Taints)和亲密关系(affinities)以及 StatefulSets、持久化卷(Persistent Volumes)和无头服务(Headless Service)的内容可以阅读后续文章的详细介绍。

感谢张婵对本文的审校。

2018-08-21 18:244061

评论 1 条评论

发布
暂无评论
发现更多内容

App前端开发跨平台框架比较:React Native、Flutter、Xamarin等

天津汇柏科技有限公司

App app定制开发 软件开发定制

WatsGo for Mac (网络电话应用程序)v8.4.0直装版

影影绰绰一往直前

华为云时习知&成都大学附属医院,打造“互联网+医疗”标杆

华为云PaaS服务小智

云计算 软件开发 华为云

如何将Word一键转PPT?收好这3个办公提效神器!

彭宏豪95

效率 PPT 在线白板 办公软件 AI工具

一文读懂Penpad 以 Fair Launch 方式推出的首个资产 PEN

股市老人

AIGC 周报(2.26~3.03)

AIGC Weekly 周报

人工智能 AI AI应用 openai AIGC

自定义限速功能实践——Map版本

FunTester

华为智慧教室3.0的晨光,点亮教育智能化变革

脑极体

AI

GaussDB跨云容灾:实现跨地域的数据库高可用能力

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

VueScan for Mac(万能扫描仪驱动程序)v9.8.25中文版

影影绰绰一往直前

Alfred 5 for Mac(苹果效率提升工具)v5.5 (2253)免激活版

影影绰绰一往直前

一文读懂Penpad 以 Fair Launch 方式推出的首个资产 PEN

BlockChain先知

Git 安全远程访问:SSH 密钥对生成、添加和连接步骤解析

小万哥

git 程序人生 编程语言 软件工程 后端开发

作业12

大肚皮狒狒

无惧“高基数”数据挑战,TDengine 携手树根互联

TDengine

tdengine 时序数据库

Media Encoder 2024 for Mac(ME2024)v24.2.1激活版

影影绰绰一往直前

SpringBoot混淆代码,防止反编译代码泄露

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

华为云时习知&成都大学附属医院,打造“互联网+医疗”标杆

轶天下事

HttpMessageConverter添加java8 LocateTime时间转换

智慧源点

XnConvert for Mac(图像格式转换软件)v1.100.1注册版

影影绰绰一往直前

iReal Pro for Mac(优秀的音乐练习参考工具)v2024.2激活版

影影绰绰一往直前

再聊对架构决策记录的一些思考

疯狂架构

架构设计实战 架构决策记录 ADR

我正在使用React Native (Expo) 开源一个精美的电商购物应用。

Geek_9da61c

产品设计 软件开发 开源中国 品牌设计

牛市初期,Penpad 以 Fair Launch 方式推出首个资产 PEN

石头财经

一文读懂Penpad 以 Fair Launch 方式推出的首个资产 PEN

股市老人

技术管理者如何避免被裁掉(1)

芃篙君

管理

编程究竟难在哪?

算法的秘密

华为云低代码Astro企业应用 Astro Pro上线啦!

华为云PaaS服务小智

低代码 华为云 公测

Data Extractor for Mac(最好用的文件数据提取工具)v1.9.2激活版

影影绰绰一往直前

Aiseesoft Audio Converter for Mac(音频转换软件)v9.2.22激活版

影影绰绰一往直前

带你全方位体验 Amazon Connect

亚马逊云科技 (Amazon Web Services)

通俗易懂图解Kubernetes_DevOps & 平台工程_Daniel Lebrero_InfoQ精选文章