大規模 IoT 邊緣容器叢集管理的幾種架構-0-邊緣容器及架構簡介

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

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

什麼是邊緣容器?

邊緣容器的概念

邊緣容器是分散的計算資源,儘可能靠近終端使用者或裝置,以減少延遲、節省頻寬並增強整體數字體驗。

可以訪問網際網路的裝置數量每天都在增加。有包括但不限於:

  • 智慧電視
  • 智慧家居
  • 智慧手機
  • 智慧汽車
  • 物聯網 IoT 創造的多種多樣其他智慧裝置

大多數使用者執行對時間敏感的應用程式,滯後會降低使用者體驗的質量。遙遠的集中式雲服務存在高延遲,通常是應用程式效能不佳的罪魁禍首。開發邊緣計算旨在使資料處理更接近使用者並解決與網路相關的效能問題。

具體而言,邊緣容器允許組織透過將應用程式的關鍵元件移動到網路邊緣來分散服務。透過將智慧轉移到邊緣,組織可以實現更低的網路成本和更快的響應時間。

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

邊緣計算的發展趨勢

?️Reference:

Edge Computing will be 4x larger than cloud and will generate 75% of data worldwide by 2025. With hardware and
software spread across hundreds or thousands of locations, the only feasible way to manage these distributed systems are the simple paradigms around observability, loosely coupled systems, declarative APIs, and robust automation, that have made cloud native technologies so successful in the cloud. Kubernetes is already becoming a key part of the edge ecosystem, driving integrations and operations.

到 2025 年,全世界** 75%的資料將會產生於邊緣,邊緣計算的規模將會比雲大 4 倍。由於軟硬體分散部署在成百上千的 不同位置上,管理這些分散式系統的唯一可行的方法是圍繞可觀測性、松耦合系統、宣告式 API 和強大的自動化**的簡單正規化,這些正規化已經在雲端計算中促使雲原生技術獲得成功。Kubernetes 已經成為邊緣生態系統的關鍵部分,持續推動其整合和運維。

-- Reported from Kubernetes on EDGE DAY

為什麼需要容器?

容器是易於部署的軟體包,容器化應用程式易於分發,使其成為邊緣計算解決方案的自然選擇。與傳統雲容器相比,邊緣容器可以並行部署到地理位置不同的接入點(PoP),以實現更高階別的可用性。

雲容器和邊緣容器之間的主要區別在於位置。雖然雲容器在遙遠的區域資料中心執行,但邊緣容器位於網路的邊緣,更接近終端使用者。

由於主要區別在於位置,邊緣容器使用與雲容器相同的工具,因此開發人員可以使用其現有的 Docker 專業知識進行邊緣計算。若要管理容器,組織可以使用 Web UI、terraform/ansible 或容器編排系統 (K8S 等)。

邊緣容器的優點

  • 低延遲:邊緣容器提供極低的延遲,因為它們距離終端使用者只有"最後一公里"。
  • 可擴充套件性:邊緣網路比集中式雲具有更多的 PoP。因此,邊緣容器可以同時部署到多個位置,使組織有機會更好地滿足區域需求。
  • 成熟度:Docker 等容器技術被認為是成熟的,經過實戰考驗。此外,無需重新訓練,因此測試邊緣容器的開發人員可以使用他們熟悉的相同 Docker 工具。
  • 減少頻寬:集中式應用程式可能會產生高額網路費用,因為所有流量都集中在雲供應商的資料中心。邊緣容器靠近使用者,可以提供預處理和快取。

邊緣容器的缺點

  • 管理複雜性:將多個容器,多個作業系統,多個架構裝置分佈在許多區域需要仔細規劃和運維/監控。
  • 增加攻擊面:邊緣裝置往往由於繫結硬體以及分散分佈,一般難以及時更新,導致邊緣裝置經常成為被攻擊成功的物件。
  • PoP 之間的網路費用:除了常規的入口和出口費用外,邊緣容器還對 PoP 之間的流量收取單獨的費用,需要考慮這些費用。(如:5G 物聯網路卡的網路費用)
  • 資源緊張: CPU/ 記憶體 / 儲存 資源緊張,邊緣裝置相比雲中心的資源,資源更為緊張,提供不了雲中心類似的 CPU/記憶體/儲存。一個邊緣裝置的資源一般在:1C0.5G8G - 2C8G32G 之間
  • 網路條件惡劣: 比如存在 5G 收費網路的情況,且訪問的目的端地址需要開通許可權,且按照流量收費,且因為 5G 網路條件,網路傳輸能力受限,且不穩定(可能會在一段時間內離線)

邊緣計算的應用場景

這裡由於筆者的能力所限,僅做部分舉例:

  • 商業衛星
  • 航空裝置:如戰鬥機等
  • 交通行業:
    • 收費站
    • 智慧交管
    • 車路協同
    • 智慧停車
  • 能源行業
    • 煤礦裝置
  • 工業製造
    • 產線
  • CDN
  • 智慧汽車
  • 智慧園區
  • 金融:銀行終端
  • 智慧物流
  • 電力
    • 電力巡檢
  • 安防監控

IoT 邊緣容器叢集管理的通用架構

針對邊緣容器的缺點之一:管理的複雜性,由於軟硬體分散部署在成百上千的不同位置上,管理這些分散式系統的唯一可行的方法是圍繞可觀測性、松耦合系統、宣告式 API 和強大的自動化的簡單正規化,這些正規化已經在雲端計算中促使雲原生技術獲得成功。

通用的架構是: 雲-邊-端 三層架構。

  1. : 雲中心, 統一管理,核心計算;
  2. :邊緣側,邊緣計算,邊緣網路, 聯通到雲端;
  3. : 端側裝置。

方案至少需要實現以下目標:

  • 雲邊協同:透過雲端管理邊端的所有容器叢集。管理至少包括 2 方面:下發指令,檢視健康狀態;
  • 邊緣自治:雲/邊網路中斷/不穩定/異常時,邊端無法連線到雲端,這種情況下邊端可以正常執行;
  • 邊端輕量化:需要資源少,支援 arm 架構,可以在資源受限的情況下正常執行

IoT 邊緣容器叢集管理的幾種架構方案

總結來看,有以下多種基於開源的實踐方案:

  1. Rancher + K3s: Rancher 用於雲端場景,K3s 用於邊場景。端是各類裝置。 多個 K3s 邊叢集透過 Rancher 統一管理。
  2. HashiCorp 解決方案: Nomad+ (consul 可選)+ docker/容器,這是一種受歡迎程度也很廣,但是比起 k8s 還是略低的編排技術。透過 Nomad UI/API/CLI 統一管理,將 nomad agent + (consul agent 可選) + docker/其他容器 作為邊/端場景。
  3. portainer+ docker: Portainer 是類似 rancher 的容器管理方案,但是可以管理多種容器編排系統,如:Docker, Docker Swarm, Kubernetes, Nomad. 這裡選擇直接管理 docker 及 docker swarm 的方式。Portainer 用於雲端場景,作為統一管理入口,docker + portainer agent 作為邊/端場景。
  4. KubeEdge: KubeEdge 是一個開源系統,用於將本地容器化應用協調能力擴充套件到邊緣的主機。它建立在 kubernetes 之上,為網路、應用部署和雲與邊緣之間的後設資料同步提供基本的基礎設施支援。在這種方案下,Kubernetes 叢集/Kubeedge CloudCore 作為雲端場景,EdgeCore 作為邊,edged 作為端。
  5. 除了以上較成熟且有案例的方案外,還有以下方案:
    1. OpenYurt
    2. SuperEdge
    3. Akri
    4. WasmEdge, 基於 Wasm, WasmEdge 為雲原生和邊緣原生環境中的 Linux 容器提供了一個輕量級、快速、安全和可移植的替代方案。未來可期。

這裡重點對前 4 個筆者認為較為成熟的、現在已經可落地的方案做一個簡要說明。

繼續閱讀

  1. 大規模 IoT 邊緣容器叢集管理的幾種架構-1-Rancher+K3s
  2. 大規模 IoT 邊緣容器叢集管理的幾種架構-2-HashiCorp 解決方案 Nomad
  3. 大規模 IoT 邊緣容器叢集管理的幾種架構-3-Portainer
  4. 大規模 IoT 邊緣容器叢集管理的幾種架構-4-Kubeedge
  5. 大規模 IoT 邊緣容器叢集管理的幾種架構-5-總結

參考資料

三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.

相關文章