博客 | NGINX

微服务和 Kubernetes: 软件生态系统园艺指南

NGINX-F5-horiz-black-type-RGB 的一部分
Jenn Gile 缩略图
詹妮弗·吉尔
2023 年 3 月 30 日发布

与园艺一样,软件开发需要了解不同元素如何协同工作以创造美丽、富有成效的生态系统。 这是我们选择园艺作为今年微服务三月计划主题的催化剂。 就像任何花园一样,有一种有问题的杂草不断出现在人们的谈话中:微服务和 Kubernetes 有什么区别?

植物是花园生态系统的主要元素。 它们是构成您花园的生物体,为其美丽和功能作出贡献。 同样,微服务现代软件应用的主要组成部分。 它们是执行特定功能的单独服务,并协同工作以创建更大、更复杂的应用。

与植物一样,微服务的大小、形状和用途各不相同。 有些规模较小,但专业化,仅负责一项操作。 其他组织规模更大,运作方式更为通用,或者由一组较小的组件组成。 例如,草莓植株很小,而且只结出草莓。 这类似于仅处理信用卡交易的微服务(小型且专业化)。 像芫荽这样更为常见的植物不仅能产出制作莎莎酱和鳄梨酱的绿叶蔬菜,还能产出芫荽籽。 这种工厂类似于处理用户身份验证的服务(更大、更通用的过程)。

大多数植物需要种植在土壤中,这样它们才能吸收养分和水分——如果让它们裸根生长,它们就会死去。 虽然将植物直接种植在地里是完全可以接受的,但许多园丁还是选择用花盆进行容器园艺,因为这样他们可以定制土壤,更好地防御害虫,并将植物在花园中移动(甚至在冬天移到室内)。 类似地,您可以选择在何处放置微服务,最常见的就是在“容器”中。 容器化的微服务包含运行应用程序所需的一切,并且可以轻松地在运行时环境之间移植。

因此,我们将微服务(植物)放入容器(花盆)中,但如何部署、维护和扩展它们呢? 用工具! 进入Kubernetes 。 Kubernetes 提供了许多功能和附加组件,使得管理和维护微服务变得更加容易,它被认为是事实上的容器编排工具。 例如,Kubernetes 提供自动负载均衡、服务发现和自我修复功能(以减轻开发人员的一些维护和监控工作)。 当每个人都希望你的微服务(工厂)能够生产更多产品时怎么办? Kubernetes 支持自动扩展和滚动更新,以保证您的微服务应用顺利运行。

笔记: Kubernetes 的替代品,例如Docker SwarmHashiCorp Nomad ,提供了非常相同的功能。

我们已经建立了使用 Kubernetes 来管理微服务并防止应用疯狂增长和失控的案例。 但 Kubernetes 和容器并非总是必要的。 根据应用的复杂性,您可以选择使用传统的虚拟(甚至物理)机器平台,该平台仍然可以使用自动化工具进行部署或配置。 这些工具不提供与 Kubernetes 相同级别的自动化和可扩展性,但对于不太复杂或非关键的应用程序,您可能可以接受这种权衡。 另一种选择是使用无服务器计算平台(例如AWS Lambda ),它使您能够运行微服务代码来响应事件,而不必担心底层基础设施。

本节标题为“Kubernetes 中并非一切都是微服务”的横幅

精明的园丁知道间作植物——例如将万寿菊与西红柿一起种植——可以更好地利用资源并有助于打造更健康的花园。 同样,Kubernetes 提供了广泛的功能和附加组件,使其不仅适用于微服务管理。 例如,Kubernetes 可用于非微服务应用程序(如机器学习模型或整体应用程序)。 我们看到很多客户使用 Kubernetes 来管理微服务和其他应用,有些甚至在 Kubernetes 内部部署虚拟机(VM)! 对于正在将传统的单片应用程序转换为面向微服务的架构的组织来说,这是一个很好的选择。

追根溯源

我们希望您能从这篇文章中学到两件事(除了渴望参观当地的托儿所之外):

  • 并非 Kubernetes 中部署的所有东西都是微服务。 Kubernetes 提供的功能和附加组件使其成为各种生态系统中的有用工具。
  • 微服务并不总是需要用 Kubernetes 来管理。 一些应用通过替代工具和“野生花园”方法蓬勃发展。

请查看以下资源以获取有关微服务基础知识的更多详细信息:


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”