大規模 IoT 邊緣容器叢集管理的幾種架構-2-HashiCorp 解決方案 Nomad

東風微鳴發表於2023-02-21

前文回顧

  1. 大規模 IoT 邊緣容器叢集管理的幾種架構-0-邊緣容器及架構簡介
  2. 大規模 IoT 邊緣容器叢集管理的幾種架構-1-Rancher+K3s

?️Reference:
IoT 邊緣計算系列文章

HashiCorp 解決方案 - Nomad + Docker

Nomad_PrimaryLogo_FullColor

簡介

Nomad: 一個簡單而靈活的排程器和編排器,可在內部和雲端大規模部署和管理容器和非容器化的應用程式

Nomad 使開發者能夠使用宣告式的基礎設施即程式碼來部署應用程式。Nomad 使用 bin packing 來有效地安排工作並最佳化資源利用。

Nomad 憑藉其簡單性、靈活性可擴充套件性高效能與相關工具區分開來。Nomad 的協同作用和整合點 HashiCorp Terraform、Consul 和 Vault 使其特別適合輕鬆整合到 組織的現有工作流程,最大限度地減少關鍵計劃的上市時間。

使用 Nomad 來安排更接近使用者的邊緣工作負載。用 Nomad 的本地服務發現連線邊緣服務。無縫地處理不穩定的 Nomad 客戶端節點連線。

Nomad UI

參考架構

當採用邊緣計算/容器時,會遇到諸如 管理異構裝置(不同的處理器、作業系統等), 資源受限的裝置,以及間歇性連線。

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 客戶端代理是單個二進位制檔案,佔用空間小,資源使用少;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 編寫.

相關文章