Kubernetes 由 Google 孵化并得到持续的社区支持,实际上是容器编排的理想之选。然而,Kubernetes 并不是适用于所有用例的解决方案。正如许多开发人员提到新功能的复杂性一样,开发人员将[1]疑虑和安全错误配置[2]视为实施的潜在障碍。并不是说这些问题无法克服,但大多数用户承认 Kubernetes 固有的复杂性使得平台的入门和安全[3]变得相当混乱。
Nomad 到底是什么?
Nomad 是Hashicorp的一个编排工具,允许用户部署和管理不同类型的应用程序,例如:
- 支持容器
- 支持传统的应用程序栈。
- 支持微服务应用程序。
- 支持批量应用。
从上面看,Nomad 看起来像这样
使 Nomad 有用的是一组丰富的 API:
- 帮助我们自动化部署、应用程序扩展和升级。
- 使开发人员能够直接管理部署。
- 自动管理故障。
- 隐藏节点管理等复杂细节,让用户只选择启动和运行应用程序所需的内容。
如前所述,Docker 是受支持的,但是任何类型的应用程序都可以在需要的任何类型的操作系统上使用(Linux、Windows、BSD 和 OSX 都支持)。可以创建集群,添加来自不同数据中心和不同区域的节点。
最后,Nomad 是一个高度可扩展的工具,它允许用户超越标准扩展概念的限制。
为什么是 Nomad?
Nomad 和 Kubernetes 的主要区别在于 Nomad 更加通用和轻量级。Nomad 可以像一个简单的任务调度程序一样工作,也可以根据项目规范承担更重的编排角色。Nomad 是由 HashiCorp 生产的补充工具组成的套件的一部分:
- Terraform,用于快速基础设施开发
- Consul,用于自动服务网络
- Vault,Hashicorp 的 secrets 管理工具
比较
Kubernetes 是一个端到端的容器编排平台,它依赖于各种松散耦合组件的动态生态系统。
Nomad 在架构上要简单得多,但提供了与强大的协调器相同的功能。这两个平台有相同点,也有异同点,具体请往下看。
相同点
Kubernetes 和 Nomad 都是为容器编排和支持类似用例而构建的开源工具。因此,两者都具有许多共同特征:
差异点
尽管这两个平台都适用于容器编排,但 Nomad 和 Kubernetes 有一些根本区别:
优缺点
选择哪一个?
结论
Kubernetes 是一个独立的编排工具,具有许多内置服务,可提供运行基于容器的应用程序所需的所有功能。它有庞大及时响应的社区支持,提供丰富的工具包和大量开箱即用的解决方案。但是,手动设置很困难,并且仅针对容器化应用程序而设计。
相比之下,Nomad 易于安装和操作,因为它只专注于集群管理。它还支持各种类型的工作负载,但它提供的功能有限,需要安装第三方工具来解决 Kubernetes 默认实现的任务。
如果您的应用程序需要额外的功能,并且您愿意花时间学习该工具,那么 Kubernetes 可能是更好的选择。但是,如果您更喜欢没有附加功能的更简单的工作流程,那么 Nomad 可能适合您的应用程序。最终,您选择哪种工具取决于您的用例以及您在生产周期中实施该工具的能力。从来没有一种工具适合所有人,所以在做出决定时,请务必考虑上述因素。