几乎每个人都在2021年触摸云基础设施熟悉Kubernetes项目。简而言之,Kubernetes是一个非常强大的容器编排平台。但在我看来,Kubernetes不仅仅是任何东西,都是一系列最佳实践烘焙到一个系统中,可以从覆盆子PI达到最大的财富500强基础设施。它赋予开发人员和运营商通过标准化的API和有意义的抽象(如POD或CONFIGMAP)协作。
Kubernetes可以通过借助开源标准来滚动自己的“集装箱策略”来节省几十年的组织,庆幸地是每个主要云供应商的标准。也就是说,像Kubernetes一样大的野兽的东西可能很难驯服,并尽可能地利用它,你需要一套额外的工具。
Kubernetes周围的令人难以置信的社区不断共享工具,帮助提高Kubernetes开发人员的经验。这是我在我的阿森纳保持的11个基本工具的列表。我通过重要类别打破了它们:那些帮助我运行Kubernetes,测试Kubernetes,最后但并非最不重要 - 在我的IDE中玩得开心。
第1类:运行Kubernetes环境
Minikube 仍然很好
几乎每个Kubernetes教程都以“下载minikube”,今天仍然有意义。如果您想在真正低风险的环境中与Docker放在一起,那么良好的包装和维护的Minikube项目将在大约23秒内运行群集。
Helm仍然是可重复部署的标准
虽然我们已经写了一个单件脚本或两个来部署到Kubernetes的某些配置,但是管理可重复部署的事实标准是用Helm。像Rhel的Ubuntu或RPM一样,Helm是一个包管理器,为Kubernetes开发人员做了很多。作为开发人员,我想在没有多少工作的情况下用其他项目测试我的应用程序。而不是写自己的jenkins设置,我可以简单地运行helm安装jenkins / jenkins并在我的路上。要查找它和其他Kubernetes软件包,请查看Artifact Hub.。
在任何地方运行Rancher K3s
将容器推向近乎完美的Kubernetes服务是一回事,但如果你想在Raspberry Pi farm的野外乱七八糟,那么怎么办?来自Rancher的K3S项目可以做诀窍。它是Kubernetes“群集”的任何边缘或IOT尝试的理想选择,因为维护者将其放入自述文件中。
使K3S成为本地和轻量级集群的选项是其广泛的支持设备。您可以真正使用K3S的任何地方运行Kubernetes。它作为单一二进制文件下载的事实意味着它包括生产Kubernetes配置的所有功能(SQLite3是默认的,但您可以通过可插拔存储后端缩放到etcd3),并且它非常积极地由Rancher团队维护及其1,749(迄今为止)贡献者。
Loft 缩放团队
任何人都可以通过上面curl命令来创建minikube集群。但如果你想和他人合作怎么办?云天然开发工具和地方发展集群交叉口有很多选择。
传统的选择是在公共云上的一些可公开访问的资源:AKS,EKS,DigitaloCean管理的Kubernetes,或其他许多其他人。但是,任何在云服务中运行Hello World教程并忘记删除它的人都知道它会花费大量,并很快。
Loft提供一系列服务,包括UI和CLI,进一步抽象他们最终在生产中运行的Kubernetes环境。通过这样做,您可以设置自助服务体验,而不会对隔离和预算的同样关注。
Loft注意到隔离,特别是与V clusters及其相应的空间,为每个开发商提供了一个现实世界的环境,没有真实世界的集中预算。这可能是开发人员和部门的价值。
Loft的价值降低了缩放和安全的Kubernetes环境的速度。其中一个使用案例提到在单个UI中创建现场产品的现场演示。思考更自私,想象一下在自己的孤立的测试用例中进行最新的生产功能,而不会发现开发群集的命名空间。这对我来说很好。
此外,Loft Labs最近聘请了 Rich Burroughs ,这是他们放在一起的社区类型的好兆头。
在与团队合作时,Loft会造成一定的意义。
第2类:简化反馈循环
Skaffold 无人驾驶反馈环
想象一下,你是一个开发人员(因为你是),你想写一个将在Kubernetes上运行的应用程序(因为你这样做)。您需要知道的kubernetes概念的数量,从运行node.js或python应用程序到运行Kubernetes上的运行容器可能会感觉像yaml的墙壁。值得庆幸的是,谷歌的好人写了Skadadold,提供了一些需要的脚手架。
不要让我错了:你仍然需要你的代码,dockerfile,清单文件和与管道关联的所有服务。在对代码的每次更改后重新运行您的部署管道,那些Skaffold优惠是一种干净的方式。它是由其用户的知名和喜爱,在世界各地的主页上的报价。
您可能与这种感觉相关:运行Skaffold感觉就像我第一次运行流浪者而不是手头管理虚拟机。曾经采取了一吨步骤的任务,并且不可靠地变得直截了当,以一种简化我所做的一切方式的方式。Skaffold将为Kubernetes进行测试和部署反馈循环来执行此操作。
Podman停止管理Docker守护进程
虽然Dockerfiles可能永远是我们表达容器的方式,但Docker本身是完全可选的。即使是Kubernetes本身也正在将其运行时间从Dockershim转移。我不能推荐Podman作为在本地运行Docker的替代品,因为您不需要维护守护程序服务。没有弄乱守护进程意味着减少时间摆弄和更多时间编码。
这种区别对您来说可能是新的,因此解释:Docker是与本地容器和守护进程(AKA服务器)进行交互的客户端,管理包含容器运行的用户空间。Nick JaneTakis在这里完美地解释。
像我一样,当一切正常工作时,您可能会忘记Docker客户端和服务器之间存在区别。那说,我经常看到这条消息:
$ docker ps $ Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
现在我留下了一个选择。我可以解决Docker守护程序和我的工具箱中的服务弄乱了什么,或者我可以使用不遇到同一问题的东西。我更喜欢后者。
Podman为您提供将容器作为子进程运行的选项,删除单独的守护程序。这意味着我从未得到那条错误的消息,我的容器继续做他们所做的事情。
您可能会从变化中撤回,因为您的肌肉记忆太嵌入了。在这种情况下,我强烈建议删除Docker CLI并将别名Docker = Podman添加到Shell配置文件中。
Tilt 真的了解你的应用程序
虽然我涵盖了一些不同的方法来管理您的管道,但我仍然发现倾斜是最彻底和可视的方式,以了解基于Kubernetes的应用程序的连续反馈循环。倾斜UI具有令人难以置信的简洁错误捕获,我在成为显着的部署错误之前找到了次要yaml错误。它还具有可定制的按钮,可为您提供唯一的应用程序特定功能,例如在迭代之间刷新架构中的消息队列。
如果您知道您希望查看细节,请在不被淹没的情况下看到细节,尝试一下 Tilt。
具有DevSpace的高效开发工作流程
你喜欢kubectl可以做什么,但忘记了让它做你想要的东西所需的众多命令吗?然后你就是运气,因为devspace是一个开源命令行实用程序,它用kubernetes开发人员体验到觉得温暖的拥抱。它将管理大量繁琐的任务,以便您可以在当地系统上运行它的吊舱。
此外,如果您有特定的首选项,则可以简单地添加到devspace.yaml声明性配置文件中。
虽然它不会是kubectl提供的手术刀的一对一替代,但运行的devspace将为您提供与真正的kubernetes环境交互的大量理智的默认行为,感觉更像$ home。
使用Lens IDE调试更快
Kubernetes像Minikube这样的项目从盒子里出来,带着时尚和简单的GUI称为仪表板。这是一个很好的环境的读取视图,但如果您想从UI做任何事情,这是什么?
开源社区中最强大的选择是Lens。我真的不应该称之为GUI,因为它足以被视为IDE。您可以通过点击按钮,完成Kubernetes能够在镜头内进行。我最喜欢镜头的是它的令人难以置信的思想上下文专用选项,帮助我了解从Kubernetes Land中需要知道的许多其他资源的命名空间的服务的区别。
第3类:IDE DEV工具我不能没有
Kubernetes扩展我们都需要Vscode
没有Kubernetes开发经验应该没有IDE,即知道Kubernetes资源和掌舵图之间的区别。这就是Visual Studio代码Kubernetes工具闪耀的地方。生活在Kubernetes世界的人必须首先安装这个。
使用此vscode插件使yaml更易于管理
Kubernetes开发人员已被描述为Yaml Farmers,我认为鞋子很适合。虽然我喜欢一个特定于域的特定语言,就像下一个kubernaut一样,我将采取任何帮助,我可以通过管理yaml本身来获得。谢天谢地,yaml语言支持扩展名,Red Hat支持,帮助我帮助自己。
它可以在许多额外的细节选项上提供大量的自动完成选项,帮助我。所有所说,右键单击并选择“格式化文件”的能力单独为黄金中的重量。
通过Footsteps找到您的代码
虽然不是严格的Kubernetes扩展,但我发现导航Yaml农场可以让我失去我离开的地方的追踪。我在哪里在我的2,000行配置文件中?那是Footsteps 在我的短期记忆中失去了脚的地方。这款辉煌的扩展,也适用于vscode或其等同物,将向您展示最近通过突出显示的文本编辑文档的位置。当您继续编辑代码时,Footsteps 会慢慢消失那些颜色,从而让您感受到您的编码模式。安装这个并拯救自己的感觉相当困难。
总结
在那里有一个令人难以置信的工具,帮助Kubernetes开发人员和运营商导航这个新的容器编排的新范式。我喜欢在三个桶中考虑它们:他们帮助我运行Kubernetes,测试Kubernetes或kubernetes感知方式吗?这些类别中的所有三个类别都可以在开源生态系统中引导您在维护良好的软件中,这将有助于您像我们其他人一样成为一个更好的Yaml牧民。