开发者的Kubernetes懒人指南( 七 )


Terraform 是关于基础设施的创建: "让我告诉你我在这些 HashiCorp 配置语言(HCL,.tf)文件中想要的!请为我创建五个服务器,几个负载均衡器,两个数据库,几个队列,以及例如我选择的云中的监控设施 。" 或者:"请为我在 AWS 上设置这些 Kubernetes 集群(EKS)" 。
我如何在本地使用 Kubernetes 进行开发?对于本地开发,你基本上有两个选择 。
你可以运行一个本地的 Kubernetes 集群,并将你的应用程序部署到其中 。你可能会使用Minikube来实现这一点 。由于整个 "我的应用程序发生了变化 - 现在让我们构建一个容器镜像 - 然后让我们将其部署到我的集群" 这个流程手动执行起来相当繁琐,因此你可能还想使用类似Skaffold的工具来帮助你 。查看这个教程以了解如何开始使用这个工作流 。尽管这种设置是有效的 , 但它伴随着相当多的复杂性和/或资源消耗 。
这就是第二种选择,解决方案的地方 。对于本地开发,你基本上会忽略 Kubernetes,将你需要的任何配置克隆到你自己的 docker-compose.yml 文件中,然后简单地运行它 。这是一个更简单的设置,但它的缺点是必须维护两套配置(docker-compose.yml + 你的 K8s 清单文件) 。
如果您已经在使用 Kubernetes,请在下面的评论部分告诉我您是如何处理本地开发的 。
我真的需要所有这些吗?这是一个很好的问题,现在是撒些真实的 Kubernetes 轶事的绝佳时机:系统管理员限制资源以至于 Pod 的启动时间变得非常长 - 长到它们被标记为不健康并被终止,导致无休止的 Pod 创建和终止循环,但我们将长篇的解释留到另一个时候 。
作为开发者 , 通常您无法决定,但以下是大局观:
正如本文早些时候提到的,关于仅“托管” Kubernetes 集群的学习材料是无穷无尽的,我们不仅仅是在谈论在裸金属上进行“自托管”,还有使用任何托管 Kubernetes 变体的情况 。如果您有内部专业知识:

  • 处理所有这些额外的复杂性
  • 您可以向所有开发人员更详细地解释本文中描述的所有概念
  • 而且首先而且首要的是您确实有管理数百或数千个容器的合法需求(不,不算神奇的突然扩展需求) - 那就选择 Kubernetes 吧 。但我相信很多公司通过采用更简单的方法而不是幻想拥有 Google 规模的基础架构挑战,可以节省大量的时间、金钱和压力 。
常见的 Kubectl 命令如果有任何对开发人员可能需要的kubectl命令感兴趣的话,请在下面留言,我会将最常用的命令添加到这里 , 作为一个整齐分组/排序的列表 。
为什么 Kubernetes 被缩写为 K8s我想你可能现在已经忘记了!这里是直接摘自 Kubernetes 文档的一段引用:
“Kubernetes 的名称源自希腊语,意为舵手或领航员 。K8s 作为缩写是因为在“K”和“s”之间有八个字母 。Google 在2014年开源了 Kubernetes 项目 。”
结束语到目前为止,您应该对 Kubernetes 有了相当好的概述 。反馈、更正和随机的意见都是受欢迎的!只需在下面留下评论 。
感谢阅读 。
下一个版本的计划在评论部分投票 , 如果您希望以下任何一项或所有这些都发生:
  • 提供复制粘贴命令 * K8s 文件,以便读者可以跟随操作
  • 可能的:kubectl 命令
  • 可能的:Kubernetes vs Docker Compose 并排配置的示例
  • 可能的:GitOps
  • 建议:使用 Kubectl/K9s/Lens IDE 或 IntelliJ Kubernetes 插件连接到 Kubernetes
  • 建议:使用 Istio 的服务网格 - 在处理微服务时的常见用例 。
致谢与参考感谢 Maarten Balliauw、Andreas Eisele、Andrei Efimov、Anton Aleksandrov、Garth Gilmour、Marit van Dijk、Paul Everitt、Mukul Mantosh 的评论、更正和讨论 。特别感谢《Getting Started with Kubernetes》和《Learning Helm》的作者们 。

【开发者的Kubernetes懒人指南】


推荐阅读