CNCF Approves Kubernetes Edge Computing Platform KubeEdge as Incubating Project
The CNCF Technical Steering Committee (TOC) announced the acceptance of KubeEdge as an incubating project. KubeEdge is a platform that aims to provide "infrastructure support for network, application deployment and metadata synchronization between the cloud and edge devices" and uses Kubernetes as the underlying foundation.
KubeEdge, originally developed at a company called Futurewei (an affiliate of Huawei), was proposed for the CNCF sandbox on 12th March 2019. The team released v1.0 in June 2019 and releases every quarter. It's worth noting that KubeEdge was the first edge computing project to be hosted under the CNCF.
The aim of KubeEdge is to make edge devices "an extension of the cloud". KubeEdge's features include Kubernetes API compatibility, optimized node components and runtimes for edges, bidirectional multiplexing messaging channels, and local device autonomy via metadata persistence at the edge. It also supports multiple edge protocols and attempts to provide a unified management of cloud and edge applications and resources. KubeEdge wants to "enable compute and intelligence at the edge", says Sean Wang, one of the maintainers of the project, in his KubeCon 2019 talk.
A KubeEdge deployment has two groups of components – those that run on the cloud and those that run on edge nodes. The cloud components – collectively called CloudCore – include an Edge controller, a Cloud Controller and a Cloud Hub. The Hub functions as the gateway and manages connections from the edge nodes. The controllers act as orchestrators, and the edge controller also functions as a bridge between the Kubernetes API server and the edge. The CloudCore is the control plane of the Kubernetes deployment, and the worker nodes are at the edge. The cloud and the edge are "loosely coupled", where agents on the edge can "autonomously manage containers and IoT devices when there is network disconnection from the cloud and can sync metadata with cloud when the network is reconnected".
Image courtesy: KubeEdge documentation
The edge components – called EdgeCore – include an Edge Hub, EdgeMesh, Metadata Manager, and DeviceTwin. The EdgeMesh serves as a service mesh for the edge, ensuring service discovery is consistent between edge-to-edge and edge-to-cloud. On the edge nodes, a "lightweight kubelet" called Edged performs pod lifecycle management. Edge device APIs are modeled as Kubernetes Custom Resource Definitions (CRDs) – where "DeviceModel" serves as a definition of what a device is, and a "DeviceInstance" represents an instance of a device. KubeEdge also supports lightweight Kubernetes clustering at the edge when the control plane can support high availability. Internal edge communications are over the standard MQTT protocol.
At the time of writing, KubeEdge supports Docker, containerd, CRI-O, and Virtlet as container runtimes on edge nodes.
The source code for KubeEdge is available on GitHub. More information on Kubernetes as a platform for edge computing can be found in the IoT Edge Working Group whitepaper.