场景 2:在沙滩上,阿杰身穿古希腊盔甲,他手持利剑,与骷髅战士和飞在空中的鹰身女妖战斗。 旁白:在古代,他率领强大的阿耳戈勇士们与众神和怪物作战… 场景 3:阿杰在办公室里,为工作而殚精竭力。他一副美国太平洋沿岸西北地区的文艺青年打扮:戴着副眼镜,蓄着长胡须,穿着一件航海风格的毛衣,头戴一顶希腊海员帽。肤色苍白,一头短发。旁白:在现代,阿杰是一名 IT 人员,他的日常战斗变得更艰难了。

场景 4:阿杰和一些技术员在数据中心里,忙着整理服务器机架。 旁白:他所在的公司推出了一款大型多人在线游戏,非常火爆,但正在经历严重的运营增长阵痛。 技术员:(啜泣)船长,看起来“茜茜”归西了! 阿杰:(心力交瘁状)那就不要再拖拖拉拉了,马上订购更多的服务器。还有,请不要再给服务器起名字了,这很让人毛骨悚然。

场景 5:阿杰忧心忡忡地扶着头,周围是一圈在向他抱怨各种问题的迷你人。 阿杰:额滴个神啊,天晓得交付这些服务怎么会这么困难! 问题 1:抱歉在凌晨 3:00 给您打电话,但是… 问题 2:我们的扩容速度跟不上! 问题 3:为什么我的代码还没有上线? 问题 4:我们的更新周期太慢了! 问题 5:老大,游戏失去新鲜感了… 问题 6:我靠,又断电了! 阿杰:怎么就不能一劳永逸呢?!

场景 6:阿杰被一个陌生人意外打断。 雅典娜:想要一劳永逸… 场景 7:阿杰吓了一跳,一个穿着古希腊盔甲的陌生人从窗户爬了进来。 雅典娜:就用 Kubernetes! 阿杰:啊?你是谁?

场景 8:雅典娜骄傲地站着,戴着羽毛头盔,穿着古希腊服装, 一手持矛,一手举着七边形的盾。她是一个小姑娘,皮肤黝黑,有一头黑色的长卷发。 雅典娜:(大声宣布)是我,雅典娜!主司智慧、工艺和容器化应用的女神。 阿杰:不是“智慧、工艺和战争”吗? 雅典娜:人类已经经历了太多战争。你们需要容器!(轻声地补充一句) 而且,我正在扩充自己的才艺。

场景 9:阿杰诚恳地试图解释。 阿杰:那个,我们已经是在容器中部署应用,但这解决不了所有这些问题…管理容器仍然很慢,效率不高,漏洞很多。 场景 10:雅典娜戳着阿杰的胸口来强调自己的观点。 雅典娜:将应用放入容器是聪明的第一步,但现在你需要管好这些“调皮的小狗狗”。在这件事上,Kubernetes 能帮你大忙!

场景 11:雅典娜抓住阿杰的手,朝着某个地方跑去,阿杰被带得双脚离地。 雅典娜:但是,先得给你补点历史课,跟我来! 阿杰:喂,如果你是希腊女神,为什么打扮得像动漫展上的菜鸟角色扮演者? 雅典娜:闭嘴,(长矛指向前方)那就是原因!

场景 12:阿杰和雅典娜站在山上。他们面前是一个散布的村庄。一个巨大的独眼怪物正在袭击村庄。怪物体内是代表应用功能的各种旋转着的工具。村民们尖叫着逃离怪物。 阿杰:哇,这是什么地方?! 雅典娜:欢迎来到远古时代。在这个时期,坡跟运动鞋很受欢迎,《权力的游戏》好像才到第二季,单体式应用统治着地球! 村民 1:啊!救命啊! 村民 2:太恐怖了!

场景 13:雅典娜抬起矛向前冲去,准备战斗。 雅典娜:单体式应用的功能很丰富,不过相互依赖的部件太多,所以集成和部署宛如一场噩梦。 场景 14:雅典娜攻击怪物,“唰”地一下斩断怪物的手。这只手中有一件旋转的工具,代表一项应用功能。 雅典娜:不过,我们学会了将它们大卸八块,分割为具体的进程,从而控制住这些怪物。 怪物:(痛苦地尖叫)啊!

场景 15:一组六件不同的旋转工具(锤子、锯子、螺丝刀、扳手、钳子和电钻)代表不同的应用功能,现在已经分离开。 雅典娜:现在,你可以对这些“微服务”逐个进行调试、更新和部署,而无需让整个项目停下来。在走向持续集成和交付的道路上,这是很重要的一步。

场景 16:阿杰看着在雅典娜的操控下,悬浮在她手上的两件旋转工具 - 锤子和钉子。 阿杰:它们仍然需要相互通信,对吗? 雅典娜:当然!它们通过轻量级协议松散地耦合在一起,正好只够进行协作… 锤子:(对钉子说)你今天看起来不错。 钉子:(对锤子说)喜欢我吗? 场景 17:阿杰身体前倾,仔细研究一件旋转的工具。现在,悬浮在雅典娜手上方的工具更多了,它们按照从上向下的层次结构排列,一件工具依赖于一件或多件其他工具。工具之间有箭头相连,表示依赖关系。 雅典娜:…并且维持将大型应用维系在一起的依赖关系。

场景 18:一张架构图显示三个长方形堆叠在一起。底部是 CPU/内存,中间是内核,顶部是操作系统。很多只手从操作系统层伸出,要抓住上方旋转的工具,使原本流畅旋转的工具一下子乱掉了。 雅典娜:事情是这样的,如果你在同一个操作系统中运行这些服务,可能会有互相冲突的库版本和应用组件… 场景 19:雅典娜站在一个透明的箱子上。箱子里都是漂浮着的旋转工具,不时地会相互碰撞。 雅典娜:即使将它们都放在虚拟机里,应用仍然可能相互冲突… 锯子(对斧头说):喂,别来烦我。 钳子(对扳手说):不要挤我! 场景 20:雅典娜吃力地举起叠在一起的一摞透明箱子,每个箱子中只有一件旋转的工具。 雅典娜:而如果为每种工具各自创建一个单独的虚拟机,只会变得头重脚轻、浪费资源而且费用高昂。

场景 21:雅典娜向阿杰展示一个正在运行的进程(以旋转的字母 A 表示),周围是阳光明媚的晴朗天空。 雅典娜:但是,如果将每个进程都构建为自主运行的个体,且内置自己的库和设置,情况会怎样?简而言之,就是每个进程都拥有在任何机器上(不管是虚拟机还是裸机)运行所需的一切。

场景 22:方形的晴朗天空淹没在幽暗的海洋深处,被好奇的鱼儿包围。方形里面的 A 在旋转,干燥而明亮。 场景 23:方形的晴朗天空漂浮在夜空中,下面是一些树木和蝙蝠。 方形里面旋转的 A 仍然是在白天。 场景 24:方形的晴朗天空漂浮在飓风期间的空中。狂风暴雨鞭打着下面的棕榈树。而在方形里面,旋转的 A 在风平日丽的环境中照常运行。

场景 25:(只有文字)。 雅典娜:一个自成一体的进程。

场景 26:阿杰在思考雅典娜刚刚说的话。雅典娜满怀憧憬地笑着,她在思考这个概念里蕴含的浪漫色彩。 阿杰:啊哈!容器登场了。不过,微服务的道路真的通向容器化应用吗? 雅典娜:不完全是,不过两者背后的理念…啊,它们是在奥林匹斯诞生的天作之合! 场景 27:雅典娜展示如何将圆形分割为多个扇形。 雅典娜:因为当模块化… 场景 28:雅典娜施法使乐高积木悬浮在空中。 雅典娜:与互操作性相结合…

场景 29:(只有文字) 雅典娜:你就可以利用全新层次的…

场景 30:一个进程(以旋转的字母 A 表示)飞向天空。 雅典娜:可移植性… 场景 31:一只手用橡皮图章复制出多个旋转字母 A 的副本。 雅典娜:可再现性… 场景 32:旋转的字母 A 向四个方向扩大。 雅典娜:以及可扩缩性…

场景 33:(只有文字) 雅典娜:无论何时何地!(这句话终于讲完了)

场景 34:阿杰和雅典娜面对面站在地球的两侧。阿杰所在的地方是晚上,而雅典娜所在的地方是白天。他们遥遥相望,相互呼喊着,而且雅典娜在挥舞着长矛强调着什么。 阿杰:喂,喂。慢点…我的团队已经快要搞不定现在运行的这些容器了。如果我们再增加容器,怎么才能及时了解它们的状况? 雅典娜:用不着你们来做!你可以让所有的容器自动化,只需使用(凯旋般地喊出)Kubernetes! 场景 35:一个巨大的 Kubernetes 徽标:单词“Kubernetes”的旁边是一个蓝色七边形。七边形中间是一个白色的舵轮。在单词“Kubernetes”的两侧,雅典娜在轻声地解释。 雅典娜:(兴高采烈地)这是希腊语,意思是“舵手”。 雅典娜:(不情愿地)也有人...开玩笑说它是指《星际迷航》。

场景 36:阿杰在思考。 阿杰:让我们再谈谈这个徽标...我说,这不是在给 Google Cloud 打广告而已吧? 场景 37:雅典娜在向起疑心的阿杰做解释。阿杰的双手交叉抱于胸前。 雅典娜:不是的。Kubernetes 是开源的!免费开放给任何想用的人使用。 场景 38:雅典娜越说越来劲了。 雅典娜:它有一个庞大的开发者社区作后盾,连 GitHub 也在用它。

场景 39:阿杰仍然抱有疑虑。雅典娜平静下来,手持长矛安静地站着。 阿杰:接下来就是广告吧? 雅典娜:(没说话) 场景 40:阿杰保持着怀疑的姿势。雅典娜的视线离开了阿杰,有点局促不安。 雅典娜:(轻声地)也许吧… 场景 41:阿杰心软了,放下双臂。雅典娜兴高采烈地笑着,举起双手做胜利状。 阿杰:嗯...好吧,继续。 雅典娜:耶!

场景 42:雅典娜的右手上漂浮着 Kubernetes 徽标,左手食指顶着一个旋转的地球仪。 雅典娜:Kubernetes 有几个关键目标:…

场景 43:容器化的进程一个接一个地填满一个水杯。最后一个容器正要放入水杯仅剩的空间里。 雅典娜:以合理高效的方式分派容器。 旁白:也就是最充分地利用容量。 场景 44:一个 Kubernetes 徽标(中间有舵轮的七边形)上,有箭头从七个角向外指,表示在向所有方向外扩。 雅典娜:根据你现有的运营状况快速地扩大或缩小规模。 旁白:也就是适应需求。 场景 45:拟人化的太阳和月亮,其中月亮的脸覆盖了太阳一半的脸,表示这个符号同时代表白天和黑夜。 雅典娜:使进程持续运行并保持良好状态。 旁白:也就是不发生中断。

场景 46:雅典娜很放松,很开心。 雅典娜:而最重要的是… 场景 47:一只手伸出食指,画了一条将几个点连起来的贯穿虚线。这只手在控制事态的发展。 雅典娜:赋予你控制力,让你控制要完成哪些工作… 场景 48:表情图:一个人惬意地在床上呼呼大睡。 雅典娜:但又不会要求你事事躬亲。 旁白:也就是说你可以惬意享受周末。

场景 49:雅典娜举着前面提到的容器化进程(在一片方形天空内旋转的字母 A),方形的四边现在有虚线框住应用,代表一个 Pod。阿杰饶有兴趣地观察着 Pod。 雅典娜:为此,Kubernetes 引入了一个新的抽象层来进行容器管理:Pod。 场景 50:代表 Pod 的一个拟人化虚线框上镶嵌着一个巨大的眼球,这个眼球正盯着容器化进程(一片方形天空内的旋转字母 A)。 雅典娜:Pod 是 Kubernetes 对象模型内最小的构件。Pod“看得见”容器… 场景 51:一个拟人化的 Kubernetes 徽标(中间有舵轮的七边形)上镶嵌着一个巨大的眼球,正盯着右侧一个拟人化的 Pod。Pod 中并未显示容器化进程。 雅典娜:但是 Kubernetes 只看得见 Pod。

场景 52:一个拟人化的 Kubernetes 徽标盯着一组 Pod。大部分 Pod 只包含一个进程。最后一个 Pod 包含两种不同的进程,这个 Pod 中冒出爱心。离其最近的一个 Pod(包含一个进程)在说着俏皮话。 雅典娜:大部分 Pod 只包含一个容器,但密切耦合的进程有时会共用一个 Pod。 单身 Pod:(轻声地)唉。去开个房吧,你们俩。 场景 53:雅典娜端出一个满是 Pod 的圆盘,递给阿杰。这些 Pod 包含运行中的进程。感觉就像是一名服务员为客人端上一盘 Pod。因此圆盘代表服务器或节点。 雅典娜:随后,成组的 Pod 会共存于一台“机器”上(真机或虚拟机),我们称之为节点。 旁白:(轻声地)以前称为“Minion”。

场景 54:雅典娜举手示意阿杰看向远处的一组圆盘。位于中央的圆盘戴着帽子,代表其有别于其他圆盘的优越地位。中央圆盘上有一个圆柱体(代表一个数据存储区)以及一个剪贴板(代表一组指令)。环绕在中央节点周围的是一些只包含 Pod 的附属节点。有箭头从中央节点指向其他节点,表示前者控制后者。 雅典娜:节点分组为集群。每个集群由一个主节点监管。

场景 55:一个卷轴神奇地出现在阿杰面前,吓了他一跳。雅典娜用长矛指着卷轴。 雅典娜:这些集群由部署来安排到位,而部署就是你通过一个简单的 .yaml 文件进行的声明… 场景 56:雅典娜站在阿杰后面,阿杰在卷轴上写着什么。 雅典娜:陈述一下你希望组建的理想的进程军团是什么样的,这个军团完全听命于你。

场景 57:神奇的部署卷轴悬停在地球上方,向下方的集群发出指令。集群由一些盛着 Pod 的圆盘和一个主节点圆盘组成。集群上方是一朵填充着容器映像的云,容器映像用内含非旋转字母的方框表示。云朵代表容器注册表。虚线箭头从云中落下,表示容器映像正被下拉到节点中。 雅典娜:Kubernetes 接下来会选择机器,并让每个 Pod 内的容器把部署中指定的容器映像拉进来。

场景 58:雅典娜坐着,两只胳膊倚在部署卷轴上,向站着的阿杰提问。 雅典娜:你想要挑选主板吗? 阿杰:嗯,我,呃… 雅典娜:(插话)对了,你需要哪种 Linux 发行版本?Ubuntu?Core OS?Debian? 阿杰:我还没有真的… 场景 59:提问变得有点像是审问了,阿杰明显开始慌起来。 雅典娜:(插话)我听说犹他州不错,想全部都布置在那里吗? 阿杰:什么,不!我的意思是也许,但是… 雅典娜:(再次插话)哦,IP 地址!想选 198.51.100.0? 还是 203.0.113.0?192.0.2 … 阿杰:(插话,有些沮丧)我不在乎! 场景 60:雅典娜身体前倾,用手指戳着阿杰的胸膛,强调自己的观点。 雅典娜:没错。

场景 61:一组集群,用放在圆盘形节点上的多组 Pod 来表示。 每个集群分别由不同的帽子监管,帽子代表集群的主节点。雅典娜与阿杰站在一边。她拉着阿杰的胳膊,用她的长矛示意他注意集群。 雅典娜:这就是 Kubernetes 的抽象基础架构的美妙之处。你不需要关心进程在什么机器上运行。对你来说它们都是一样的!

场景 62:一个容器映像漂浮在云中。云朵的下面是一排正在 Pod 中运行的容器化进程。有箭头从云朵指向 Pod 列,表示队列中的副本是基于容器映像创建的。 雅典娜:所有容器都是按同样的方式基于指定的映像创建,可以相互换用。事实上,它们都是相同的,都是使用同一个不可修改的模板创建的。 场景 63:雅典娜笑嘻嘻地用内含容器化进程的 Pod 玩杂耍。 阿杰畏缩地躲在后面,担心她会掉下什么东西。 雅典娜:所以,凭借着可互换的容器副本和可互换的机器…

场景 64:雅典娜抛接的 Pod 从空中落到节点上 - 即雅典娜手上托着的圆盘。落下的箱子状 Pod 整齐地堆叠在一起,每行和每列都在一条直线上。 雅典娜:Kubernetes 可以将每个副本抛到正确的位置! 场景 65:三辆行进中的卡车排成一行。每辆车上都随意丢着一些箱子。第一辆车有 75% 的空间空着,第二辆有 50% 空着,最后一辆有 90% 空着。 雅典娜:不想再浪费 CPU 了? 场景 66:一辆行进中的卡车,车上的箱子整齐地从底部一直堆放到顶部。车厢里仅剩的空间正要放入最后一个箱子。 雅典娜:Kubernetes 会为你寻找更高效的“装箱”方式。

场景 67:三个相同的节点 - 每个节点表示为一组放在圆盘形节点上的 Pod。 雅典娜:与此同时,风险得以分散,运行中的任何进程… 场景 68:顶部节点被闪电击中,开始土崩瓦解。其他两个节点安然无恙。 雅典娜:都绝不会因为一个单点故障而完全宕机… 场景 69:顶部节点灰飞烟灭。其他两个节点安然无恙。 雅典娜:副本可以继续平稳运行,而且系统… 场景 70:拟人化的容器映像(表示为内含旋转字母的矩形)现在长出了手脚,正在奔向节点上的空 Pod。主节点(用一顶帽子表示)在阅读部署卷轴,注意到了现实状况与部署方案之间存在差异。 雅典娜:会快速恢复到理想的部署状态。

场景 71:Kubernetes 显示为一个正在冥想的人,其头部是七边形的 Kubernetes 徽标。它正在经历开悟。 雅典娜:Kubernetes 可以自我修复。 场景 72:Kubernetes 显示为镶嵌着一个巨大眼球的七边形 Kubernetes 徽标。它在研究部署卷轴。 雅典娜:系统会狂热地对比部署方案中传达的完美状态… 场景 73:Kubernetes 显示为镶嵌着一个巨大眼球的七边形 Kubernetes 徽标。它在研究一个集群,这个集群中有一个主节点以及多个工作器节点。每个工作器节点上都放着多个 Pod。 雅典娜:与实际运行中的 Pod 和集群的状态。

场景 74:雅典娜站在阿杰旁边,向他展示一个部署卷轴。 雅典娜:不会容忍。不找借口。 场景 75:显示了两个节点,节点中包含 Pod 和运行中的容器化进程。在一个节点上,有一个容器化进程已经死亡(用一个骷髅头和交叉的骨头表示)。 雅典娜:如果检测到任何违规或不一致的情况 - 砰。一定会有某件东西被终结… 场景 76:云中的一个容器映像正向下掉落到一个空 Pod 中。 雅典娜:然后立即重生。

场景 77:阿杰和雅典娜站在云下,云里是一个标着“A”的容器映像。一只手从屏幕外伸进来,将新的容器映像“A+”插入云中。 阿杰:那么更新呢? 雅典娜:相同原理。 场景 78:一朵内含“A+”容器映像的云位于时钟中心。 时钟周围一圈通常是数字的地方现在显示的是字母。随着指针的转动,“A”逐渐被“A+”取代,表示应用版本的滚动更新。 雅典娜:从注册表中拉取新的容器映像,并用其部署新容器… 场景 79:指针已经走完一圈,所有“A”都已被“A+”取代。 雅典娜:通常是进行滚动更新,以确保顺畅、平稳地过渡。

场景 80:雅典娜和阿杰分别站在一堆节点的两侧。每个节点中都有三个应用在运行。应用分别标记为“A”、“B”和“C”。所有“B”应用都框在一个穿过节点边界的矩形里。这个矩形代表一个标签。 雅典娜:利用标签,我们可轻松将进程的所有副本视为相应集群中的同一个实体,对其统一进行处理。一组副本构成一项服务。 场景 81:Kubernetes(显示为镶嵌着一个巨大眼球的七边形 Kubernetes 徽标)在与一个负责管理一集群节点的主节点(用帽子表示)交谈。 雅典娜:Kubernetes 不操心单个进程。它关心的是真切的结果:这些进程提供的聚合服务。这有点像你,我敢打赌。 KUBERNETES:(对主节点说)有“B”吗?(意指“B”服务) 主节点:(对 Kubernetes 说)有,而且多到你不敢相信。

场景 82:Kubernetes 悬停在地球上,监控着一组集群。在背景中的天空上,太阳和月亮交替显示,表示时间的流逝。 雅典娜:Kubernetes 专注于使这些服务在每一分钟都正常运行并保持良好状态。 场景 83:雅典娜和阿杰仰望太阳,代表光明的未来。 雅典娜:这是一个新的千年,老先生!没人会在掏腰包的时候考虑某个应用现在是否“可用”。它必须时刻保持运行,否则你的日子也就到头了。

场景 84:雅典娜在空中飞着,长矛举在身前。阿杰骑着一台高速行驶的摩托车。他看起来有些惊慌,帽子在他身后飞走。摩托车上标着“忒修斯”字样,文字下面画着一艘船。(让人联想起忒修斯之船。) 雅典娜:有了 Kubernetes,你的应用想要持续运行多久都没问题! 阿杰:哇,这转变也太快了!

场景 85:没戴帽子的阿杰因为摩托车带着他加速运行而惊慌失措。雅典娜在他身后飞着,微笑着与他惬意交谈。 雅典娜:就像模块化和不可变性促进持续集成一样,容器和 Kubernetes 可以实现持续交付。 阿杰:你知道我是个水手,对吧?!

场景 86:雅典娜对着高速行驶的摩托车俯冲过来,指着从转动的前轮掉下的螺丝和螺帽。 雅典娜:噢,快看,螺丝松开了!用不着停车! 阿杰:不,我可以靠边停车! 雅典娜:(插话)已经搞定了! 场景 87:阿杰仍然骑着高速行驶的摩托车,不过车型已经完全不同。雅典娜在他旁边飞着。 雅典娜:想要升级到新车型吗? 阿杰:(忙乱地)当然,麻烦你了!让我们先停到— 雅典娜:(插话)瞧!一辆崭新的摩托!

场景 88:(只有文字。) 旁白:六小时后…

场景 89:阿杰回到办公室,瘫坐在椅子上。身心俱疲。雅典娜站在他的办公桌旁,抬起她的长矛做胜利状,微笑着。 阿杰:好了,比喻足够了。我相信了!Kubernetes 确实是管理容器的最佳方式。 雅典娜:太棒了!

场景 90:热情的雅典娜开怀大笑,朝阿杰靠过去。 雅典娜:那么,开始使用 Kubernetes Engine,借助 Google 自有的世界级基础架构,来充分发挥 Kubernetes 的能力,你准备好了吗? 场景 91:阿杰仍然瘫坐在椅子上,表情将信将疑,显得疲于世俗事务的样子。 阿杰:这就是广告部分了吧? 雅典娜:(不在图中)差不多吧。 场景 92:阿杰仍然坐在桌后,把手放在前额,松了一口气。雅典娜拿起他的键盘。 阿杰:还好,没那么糟糕嘛。

场景 93:阿杰和雅典娜挤在计算机前一起工作。 雅典娜在打字。 阿杰:我跟你说,我会让我的团队参与进来,给他们报名参加一些培训。我们可以试试,在大约十周内启动我们的第一个节点… 雅典娜:或者…

场景 94:雅典娜指着阿杰的台式机显示器。阿杰很惊讶。 雅典娜:十分钟怎么样?

场景 95:(只有文字。) 旁白:现在该您亲自试试了!在下面的终端模拟器中输入命令,了解如何在 Kubernetes Engine 上创建 Kubernetes 集群。

场景 96:一个终端窗口,四边是装饰性的希腊回纹。

场景 98:雅典娜站着吆喝,一手握矛,一手持盾。 雅典娜:嘘!想要免费的礼物吗?您可以获享 $300 赠金,在 12 个月里免费试用 Google Cloud Platform!