KubeEdge v1.1發佈: 將Kubernetes容器存儲標準CSI帶到邊緣

北京時間9月17日,KubeEdge發佈了新的特性版本v1.1。git

在上個版本發佈EdgeMesh、EdgeSite等特性後,KubeEdge持續保持高速的迭代開發,本次發佈的v1.1新版本包含了容器存儲標準CSI集成、對象校驗組件Admission Webhook、單機一鍵啓動KubeEdge集羣工具、邊緣節點支持DockerShim、升級Kubernetes依賴到v1.15 Stable版本,以及25處問題修復。github

Release下載地址:https://github.com/kubeedge/kubeedge/releases/tag/v1.1.0數據庫

接下來本文將逐一解讀KubeEdge v1.1的新特性。api

KubeEdge項目背景

KubeEdge即Kube+Edge,顧名思義就是依託K8s的容器編排和調度能力,實現雲邊協同、計算下沉、海量設備的平滑接入。架構

**KubeEdge架構上分爲三個部分,分別是雲、邊、端三側。**雲端負責雲上應用和配置的校驗、下發,邊緣側則負責運行邊緣應用和管理接入設備,設備端運行各類邊緣設備。KubeEdge完整的打通了邊緣計算中雲、邊、設備協同的場景,總體架構以下圖。app

雲端組件包括CloudCore、Admission Webhook,它們構建在K8s的調度能力之上,100%兼容K8s原生API,能夠運行在任何K8s集羣中,包括各廠商的K8s產品、用戶在雲上自建的K8s集羣等。CloudCore中主要包含EdgeController、DeviceController、CloudHub三個模塊。工具

  • EdgeController、DeviceController即K8s傳統意義中的控制器,負責與邊緣側應用、設備元數據的同步。
  • CloudHub負責與邊緣側直接通訊。

**邊緣側組件包括EdgeCore及接入設備的Mappers。**Mappers負責接入邊緣設備,EdgeCore負責邊緣應用與設備管理,其模塊主要包括EdgeHub、Edged、設備信息管理模塊,應用與設備信息持久化模塊。測試

  • EdgeHub負責與雲端直接通訊。
  • Edged是邊緣側負責應用生命週期管理的模塊,它是裁剪過的Kubelet,在保留上游核心功能的基礎上,又知足邊緣側輕量化的需求,其API與Kubelet徹底兼容。
  • 設備信息管理模塊主要經過MQTT協議與接入到邊緣端的設備交互。
  • 應用與設備信息持久化模塊負責將應用與設備元數據持久化到本地的SQLite數據庫中,以在邊緣斷網的狀況下實現邊緣自治。

01 容器存儲標準CSI集成

邊緣側運行的程序常常有存儲數據的需求,例如邊緣的視頻收集分析程序,須要將視頻信息保存下來。KubeEdge在提供了ConfigMap、Secret、HostPath、Emptydir、Downwardapi及Projected這些Volume的基礎上,在v1.1版本中又集成了容器存儲接口CSI,使得用戶可使用K8s標準的存儲方案,如StorageClass(SC),PersistentVolume(PV)和PersistentVolumeClaim(PVC)在邊緣側存儲數據,總體架構以下:spa

其中藍色部分爲複用的Kubernetes-CSI組件,包括External-Provisioner、External-Attacher、Node-Driver-Registrar、CSI Driver from Vendor,主要負責在雲上監聽K8s的PV、PVC、VolumeAttachment等資源。黃色部分爲KubeEdge中新添加的模塊,包括CSI Driver from KubeEdge、UDS Server、Managers in Edge Controller、CSI Volume Plugin(In-Tree),主要負責將存儲信息同步到邊緣側,以及調用外部插件來管理存儲卷。插件

02 對象校驗組件Admission Webhook

隨着愈來愈多的資源對象如Device、DeviceModel等加入到項目中,KubeEdge須要對它們進行校驗。v1.1發佈了對象校驗組件Admission Webhook,目前主要負責對Device、DeviceModel對象的校驗。將來還會對Pod進行校驗、修改,保證Pod在邊緣的運行以及控制離線場景下的遷移等。

Admission Webhook採用容器化形式部署,用戶只需以Pod的形式運行新版本的鏡像便可。

03 單機一鍵啓動KubeEdge集羣工具

v0.3版本中發佈了一鍵部署工具KubeEdge Installer(keadm),它包含Cloud和Edge兩類子命令,Cloud端的命令負責安裝一個Kubernetes集羣和CloudCore。Edge端的命令負責初始化一個邊緣節點並加入到KubeEdge管理面。KubeEdge Installer能夠在實際生產場景中部署KubeEdge。

v1.1提供的一鍵啓動KubeEdge集羣工具,可將完整的KubeEdge集羣運行在一臺機器上。用戶只需運行該腳本,便可在一臺機器上運行一個KubeEdge集羣,方便開發者調測。它使用Kind運行一個K8s集羣,將KubeEdge相關的組件運行在一臺機器上,能夠方便地用於開發測試、CI測試等。

https://github.com/kubeedge/kubeedge/blob/master/hack/local-up-kubeedge.sh

04 邊緣節點支持DockerShim

v1.0版本中在邊緣側添加了對CRI接口的支持,使得用戶能夠在邊緣側使用多種運行時,包括Containerd、Cri-o等。v1.1版本中,爲了使用戶能夠直接使用Docker,且與K8s上游社區保持一致,在邊緣側添加了對DockerShim的支持。

05 其餘修改

v1.1將K8s依賴升級到了v1.15 Stable版本,Edged對應的K8s版本也升級到了v1.15,用戶能夠在邊緣側享用最新版K8s的應用管理、存儲管理等能力。

v1.0版本的EdgeMesh只支持REST協議,因爲K8s的Service原生是L4的,且應用場景很是普遍。在v1.1中EdgeMesh提供了L4 Proxy的能力。

結語

隨着v1.1版本的發佈,KubeEdge提供了更完備的邊緣應用生命週期管理以及設備管理能力,更加友好的社區貢獻者體驗,感謝每一位爲社區作過貢獻的貢獻者。後續版本將進一步提高雲邊協同的效率、可靠性,更多的邊緣設備協議支持。更多詳情請關注:

項目官網: https://kubeedge.io

代碼倉庫:https://github.com/kubeedge/kubeedge

相關文章
相關標籤/搜索