今天要介紹的是Edge端的元件,元件有點多所以會分幾天作分享。
負責管理邊緣端Pod的生命週期。也可以協助使用者執行工作,例如資料擷取、模型驗證等工作。分成幾個功能模組:
(EdgeD功能模組,取自官方文件)
管理Pod的新增/刪除/更新,如Pod新增時掛載對應的儲存空間、要求secret、確認容器映像檔取得等前置工作。更多執行細節可以參考官方文件裡提供的流程圖(在元件標題上)。通常是執行時查看核心log發現有問題時才會查對應的流程圖,判斷可能是哪裡出錯。
協助更新Pod狀態,可讀性(readiness)以及可存取性(liveness)
在1.4版本中提供CRI(Container Runtime Interface)支援,可以支援不同的容器引擎,當邊緣節點的資源受限時可以改用更輕量化的容器引擎而不受限於只能使用docker。
作為EdgeD與Meta Manager間的介面,提供EdgeD向Meta Manager請求configmap、secret;同時也負責轉發節點、Pod狀態給Meta Manager向雲端傳送。
負責管理Secret的調用。通常secret是存在雲端的,需要時才會向雲端請求;考慮到雲端與邊緣間網路的不穩定性,當EdgeD透過MetaClient向MetaManager(邊緣端的元件,後面會再說明)請求secret時,如果本地端資料庫沒有必須從雲端請求的話,在取得secret後會同時存一份在本地資料庫中,再回應EdgeD的請求,之後有需要再調用secret時便能從本地資料庫取得,不需要再向雲端請求。
探針管理負責監控Pod的可讀性(readiness)與可存取性(liveness)。
負責管理ConfigMap,運作流程和前面提到的Secret Management類似,同樣和MetaManager要求,取得後仍然會保存一份在本地端資料庫中。
接者以下兩個元件是有關邊緣端的資源管理:
負責回收死掉的容器資源,每分鐘執行一次。有幾個參數可以由使用者設定
預設會從最老的容器開始清理。
負責清理容器映像檔(image),每五秒執行一次,容器的映像檔有時候很佔空間,考慮到邊緣裝置硬體設備的有限性所以設計這個功能,使用者定義的參數有
每十秒更新一次Pod狀態,透過Meta Client向Meta Manager傳達狀態訊息,由Meta Manager和本地端資料庫同步過Pod狀態後再經由EdgeHub向雲端傳達Pod狀態。
管理Pod容器的儲存空間操作(attach/mounted/unmounted/detached)