YurtDeviceController

    • In order to support various edge devices, the existing framework must develop special adapters for each category of devices;
    • When adapting Kubernetes to the edge computing environments, existing solutions either change the system architecture or modify core components (such as kubelet) significantly.

    At the same time, we saw a lot of great edge device management platforms emerging in the community,such as EdgeX Foundry. inspiring by the Unix philosophy, “Do one thing and do it well”, we believe that Kubernetes should focus on managing computing resources while edge devices management can be done by adopting existing edge computing platforms.

    A overall architecture about cloud-edge-device depicted below

    The communication range of edge devices is usually limited to a certain network area. Therefore, edge nodes in the same network area can be divided into a nodepool. So a device management platform and a yurt-device-controller can be deployed in each nodepool.:

    • When communicating with kube-apiserver on the cloud, Yurt-Device-Controller only watches the device objects in its nodepool and synchronizes the updated specs to the corresponding devices through the corresponding device management platform.
    • When communicating with the device management platform,YurtHub, NodePool, and UnitedDeployment capabilities are reused. The device information in the node pool is abstracted into device, deviceService, and deviceProfile objects and synchronized to the cloud.
    • DeviceProfile:defines a type of devices using same kind of protocol, which includes some generic information like the manufacturer’s name, the device description, and the device model. DeviceProfile also defines what kind of resources (e.g., temperature, humidity) this type of device provided and how to read/write these resources.
    • DeviceService:defines the way of how to connect a device to the OpenYurt, like the URL of the device. The DeviceService can not exist alone. Every DeviceService must associate with a DeviceProfile.

    The major Yurt-Device-Controller components consist of:

    • Device controller: It can abstract device objects in the edge platform into device CRs and synchronize them to the cloud. With the support of device controller, users can influence the actual device on the edge platform through the operation of cloud device CR, such as creating a device, deleting a device, updating device attributes (such as setting the light on and off, etc.).
    • DeviceService controller: It can abstract deviceService objects in the edge platform into deviceService CRs and synchronize them to the cloud. With the support of deviceService Controller, users can view deviceService information of edge platforms in the cloud, and create or delete deviceService CRs to affect the actual deviceService of edge platforms.
    • DeviceProfile controller: It can abstract deviceProfile objects in the edge platform into deviceProfile CRs and synchronize them to the cloud. With the support of deviceProfile Controller, users can view deviceProfile information of edge platforms in the cloud, and create or delete deviceProfile CRs to affect the actual deviceService of edge platforms.

    EdgeX Foundry is a vendor-neutral open source project hosted by The Linux Foundation building a common open framework for IoT edge computing. It’s a framework hosted within a full hardware and OS-agnostic reference software platform to enable an ecosystem of plug-and-play components that unifies the marketplace and accelerates the deployment of IoT solutions. In collaboration with the EdgeX Foundry community, OpenYurt integrated EdgeX since 0.5.0. In addition to yurt-device-controller, A yurt-edgex-manager component is also provided to simplify the deployment of the EdgeX Foundry in edge scenarios.

    Integration Architecture:

    img

    In OpenYurt Cluster, EdgeX uses Kubernetes Service to provide access.

    VersionImageRelease DateChangesRemark
    v0.1.0openyurt/yurt-edgex-manager:0.1.02021.09First Release
    v0.2.0openyurt/yurt-edgex-manager:0.2.02022.05Support EdgeX LTS Version