前文回顾

  1. 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介
  2. 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s

Reference:

IoT 边缘计算系列文章

HashiCorp 解决方案 - Nomad + Docker

简介

Nomad: 一个简单而灵活的调度器和编排器,可在内部和云端大规模部署和管理容器和非容器化的应用程序

Nomad 使开发者能够使用声明式的基础设施即代码来部署应用程序。Nomad 使用 bin packing 来有效地安排工作并优化资源利用。

Nomad 凭借其简单性、灵活性可扩展性高性能与相关工具区分开来。Nomad 的协同作用和整合点 HashiCorp Terraform、Consul 和 Vault 使其特别适合轻松集成到 组织的现有工作流程,最大限度地减少关键计划的上市时间。

使用 Nomad 来安排更接近用户的边缘工作负载。用 Nomad 的本地服务发现连接边缘服务。无缝地处理不稳定的 Nomad 客户端节点连接。

参考架构

当采用边缘计算/容器时,会遇到诸如 管理异构设备(不同的处理器、操作系统等), 资源受限的设备,以及间歇性连接。

Nomad 解决了这些挑战,使其成为一个有吸引力的边缘协调者。Nomad 客户端代理是单个二进制文件,占用空间小,资源有限消费,以及在不同类型的设备上运行的能力。另外 Nomad 支持地理位置较远的客户端,这意味着 Nomad 服务器群集不需要在客户端附近运行。

通过 Nomad 1.3,原生服务发现 (native service discovery) 简化了连接 Nomad 任务的过程,在那里你不需要使用单一的服务网格,并且不再需要管理一个单独的 Consul 集群。Nomad 的原生服务发现还消除了在每个边缘设备上安装 Consul 代理的需要。这进一步减少了 Nomad 的资源占用,因此你可以在边缘运行和支持更多的工作负载。此外,断开的客户端分配可以优雅地重新连接,处理边缘设备遇到网络延迟或临时连接损失的情况。

如下图,

  1. 本地数据中心或云,将托管 Nomad 服务器集群和一个客户端用于统一管理
  2. 边缘端运行 Nomad 客户端。

方案优点

  • 部署容器和旧版应用程序: Nomad 作为协调程序的灵活性使组织能够在同一基础架构上同时运行容器、旧版和批处理应用程序。Nomad 为旧版应用程序带来了核心编排优势,而无需进行容器化。
  • 简单可靠:Nomad 作为单个二进制文件运行,并且完全独立 - 将资源管理和调度结合到单个系统中。Nomad 不需要任何外部服务进行存储或协调。Nomad 自动处理应用程序、节点和驱动程序故障。Nomad 是分布式和弹性的,使用领导者选举和状态复制在发生故障时提供高可用性。
  • 资源占用少: Nomad 客户端代理是单个二进制文件,占用空间小,资源使用少;Nomad 1.3 以上版本的 native service discovery 还消除了在每个边缘设备上安装 Consul agent 的需要。这进一步减少了 Nomad 的资源占用。
  • 设备插件和 GPU 支持:Nomad 为 GPU 工作负载(如机器学习(ML)和人工智能(AI))提供内置支持。Nomad 使用设备 插件 来自动检测和利用来自硬件设备(如 GPU、FPGA 和 TPU)的资源。插件很丰富,支持:
    • Docker
    • Isolated Fork/Exec
    • Java
    • Podman
    • QEMU
    • Raw Fork/Exec
    • containerd
    • Nvidia
    • USB
    • ...
  • 经过验证的可扩展性:Nomad 乐观地并发,可提高吞吐量并减少工作负载的延迟。Nomad 已被证明可以在实际生产环境中扩展到 10K +节点的集群。
  • HashiCorp生态系统:Nomad 与 Terraform,Consul,Vault 无缝集成,用于配置,服务发现和机密管理。满足更复杂的边缘容器管理需求。

方案缺点

  • 不兼容 Kubernetes 生态: Nomad 是与 Kubernetes 完全不同的另一套容器编排/调度解决方案,所以不兼容 Kubernetes 生态。需要付出相关的学习成本和额外的人力成本。
  • 管理功能较少: 也是因为 不兼容 Kubernetes 生态,所以完全无法享受 Kubernetes 庞大生态带来的功能红利。管理功能相对较少。如果需要额外的自动化能力,需要集成 Terraform; 需要额外的服务发现能力,需要集成 Consul; 需要额外的机密管理能力,需要集成 Vault.
  • UI 简单

继续阅读

  1. 大规模 IoT 边缘容器集群管理的几种架构-3-Portainer
  2. 大规模 IoT 边缘容器集群管理的几种架构-4-Kubeedge
  3. 大规模 IoT 边缘容器集群管理的几种架构-5-总结

参考文档

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

最新文章

  1. SSRF篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题
  2. 控制ASP.NET Web API 调用频率
  3. WPF的二维绘图(一)——DrawingContext
  4. WIN7环境下CUDA7.5的安装、配置和测试(Visual Studio 2010)
  5. 昨天在公司加班,上午好像就是弄一个ftp的linux服务问题
  6. git常用命令有用
  7. Dedecms include\dialog\select_soft_post.php Upload Any Files To The Specified Directory Via Variable Not Initial Flaw Bypass Extension Defence
  8. php编译安装参数说明
  9. 一个【wchar_t】引发的学案
  10. 初窥Linux 之 区分硬连接和软连接
  11. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)
  12. 文件同步服务器,iis 集群 ,代码同步(一)
  13. 一个maven项目打多个可执行Jar文件
  14. 【从零开始搭建自己的.NET Core Api框架】(三)集成轻量级ORM——SqlSugar:3.1 搭建环境
  15. iOS----------常用三方库
  16. 【设计模式】【应用】使用模板方法设计模式、策略模式 处理DAO中的增删改查
  17. android checkBox选中与取消
  18. 742. Closest Leaf in a Binary Tree查找最近的叶子节点
  19. Ping监控脚本
  20. *args 和**kwargs 的溯源

热门文章

  1. AWS启示录:创新作帆,云计算的征途是汪洋大海
  2. linux mint 归档管理器报错Extraction not performd
  3. 【Java SE】Day02 数据类型转换、运算符、方法入门
  4. 持续发烧,试试Dart语言的异步操作,效率提升500%
  5. static_cast和dynamic_cast
  6. 《HTTP权威指南》– 16.重定向与负载均衡
  7. 从Qt到C#,通过COM组件达成跨语言跨平台链接,或者说从托管到非托管的思路
  8. angr原理与实践(三)——Arbiter:一种弥合二进制程序漏洞发现中的静态和动态鸿沟
  9. 【转载】EXCEL VBA-区域选择
  10. java反射基础知识整理