对于新手来说,Kubernetes 可能是一头野兽。我们体验到了许多好处和便利,但在引擎盖下却发生了许多我们无法看到的事情。为了剥开一些复杂的层次,我分叉了一个著名的软件仓库--KelseyHightower 的《Kubernetes the Hard Way》,以制定一种针对 Linode 的方法。我的分叉仓库在这里。
如果你以前没有接触过 Kelsey 的教程,那就值得一看。他是业界比较知名的 Kubernetes 传播者之一,也是该项目最早的贡献者之一。
如果你以前从未部署过 Kubernetes 集群,那么我建议你先采取以下步骤,以了解硬性部署的不同之处:
- 查看Kubernetes 的官方入门指南。
- 试用Linode Kubernetes 引擎。
好了,现在如果你已经准备好真正深入了解 Kubernetes 的工作原理,我将带你领略我从Kubernetes 的艰辛历程中学到的一些最重要的经验。它将把你可能曾经认为理所当然的事情,以一种全新的方式加以理解。希望这足以让你有兴趣亲自一试!
第一课:你会做错。
Hightower 作品的神奇之处在于,它向你展示了为什么 Kubernetes 的脚本部署应用如此广泛。他只是简单地向你介绍了运行这些部署时会发生什么。
您可能会在同时在三个控制平面节点上运行命令时打错字,然后需要返回重新输入。你也可能在实验结束时才意识到该部分的烟雾测试完全失败,需要重新开始。当我们犯错时,我们学到的最多,因为这样我们就能回过头来弄清楚我们到底做错了什么。事实上,整本教程中最有用的部分之一就是清理部分,因为你可能会遇到集群中的东西坏得无法修复的时候,你只需要从头开始。
我之前说过 Kubernetes 很难吗?
第 2 课:Kubernetes 并不神奇。
如果你只在托管的 Kubernetes 集群中工作过,你可能会觉得 Kubernetes 是一个神奇的系统,它能让你的东西一直运行下去。通过《Kubernetes 的艰难之路》的学习,你会发现 Kubernetes 并不神奇。它只是一堆代码,做着优秀软件最擅长的事:让你看起来像个魔法师。
当你为如何正确设置 Linodes 上的主机名而煞费苦心,或试图弄清Kubernetes 的网络模型到底是怎么回事时,你就会清楚地认识到,你所面对的并不是什么神奇的容器尘埃,只要在基础架构上撒上一些,就能让一切难题迎刃而解。
最后,当你通过键入每一条命令完成 Kubernetes 集群的部署,而不仅仅是按下按钮将生产代码发布到世界上时,你就会明白为什么Kubernetes 的按钮式解决方案如此之好。这也意味着,当集群出现问题时,你可以深入其中并解决问题,而这些问题你可能并不知道是平台的一部分。
第三课:阅读文档。
在我第一次阅读 Hightower 的教程时,大约读了一半,我就意识到了一件事,那就是指向文档的链接并不只是为了好玩,它们是必不可少的。要建立这个庞大的系统,必须通读 Kubernetes 文档。
当然,你也可以简单地将所有内容输入终端,获得运行小型 Kubernetes 集群所需的所有 Linodes,但你需要超人的打字技巧,并确保一路上不出任何差错。当然,你可能会在学习结束时对 Kubernetes 的运作有更多的了解,但这远远比不上你对每个实验室中的链接的关注程度。
对于一些读者来说,这节小课可能是显而易见的。不过,有些人可能会经历这样的循环:无法确定如何让某个实验室工作,于是直接跳到指南的 "清理 "部分重新开始。在此之前,请先查看关键链接。顺便阅读一下文档,你会更快乐。
总结:不要放弃!
如果你还在读这篇文章,并且还没有被吓跑,我对你表示赞赏。你可能不需要我最后的忠告,但我还是要告诉你:不要放弃。不管有多难,用艰苦的方式建立 Kubernetes 并不是不可能完成的任务。毕竟,按钮式解决方案一直都在做这件事,甚至无需任何人思考。如果电脑可以按照一堆指令进行操作,那么你也可以。
此外,看着自己部署到手工构建的 Kubernetes 集群上的网站,那种感觉有点像看到了只有徒步一天才能到达的高山湖泊。你会很高兴自己做到了。
Hightower 的指南非常有用,这也是我将它分叉以获取 Linode 专用资源的原因。我确实学到了很多东西,但更重要的是,我在学习过程中收获了很多乐趣!作为技术专家,这就是我们从事技术工作的初衷:我们喜欢解决棘手的问题。
如果你想迎接挑战,就自己去看看指南,启动一些 Linodes,成为 Kubernetes向导!
注释