Akri is a Greek village in the north of the country in the Elassona municipality.
Akri is also a new (as of Oct 2020) open source project initiated by Microsoft to connect ‘leaf devices’ like sensors, controllers and microcontroller unit (MCU) class devices in a Kubernetes cluster.
A leaf device (sometimes also called a child device) is an IoT edge device with no downstream device — in a transparent gateway scenario, downstream devices need identities in an Internet of Things (IoT) hub like any other device.
With Akri, leaf devices are any devices that the Kubernetes cluster can communicate with, whether is it physically attached to a node or discoverable on the network. Often, they’re devices that are too small to run Kubernetes on, but it can technically be any device. For example, Akri can discover standalone devices that solely produce data and have no downstream devices, or it can also discover a server that aggregates data from many devices. As a tree analogy, leaf devices can be around the tree, hanging from a branch, or part of the tree itself. If it can communicate with the cluster, it can be abstracted as a leaf device.
As most edge devices are usually too small to run Kubernetes themselves, Akri will work to extend the Kubernetes device plugin framework, taking this framework and applying to the edge.
So we uncover the truth behind the Greek reference, Akri also means edge in Greek.
Microsoft’s marketing engine also suggests that AKRI could be read as an acronym i.e. A Kubernetes Resource Interface (for the edge).
Akri is Kubernetes native
The architecture is made up of four Kubernetes components: two custom resources (CRDs), a device plugin implementation and a custom controller.
Akri handles the dynamic appearance and disappearance of leaf devices. Once a user has applied an Akri Configuration to a cluster and deployed, Akri does the rest. A user can also allow multiple nodes to utilise a leaf device, thereby providing high availability in the case where a node goes offline.
According to Microsoft open source engineer Kate Goldenring, one of the hallmarks of the edge in computing is the array of sensors, controllers and microcontroller unit (MCU) class devices that produce data and perform actions.
“For Kubernetes to be a versatile edge computing solution, a cluster needs to easily find these leaf devices. Most of these devices, however, are too small to run Kubernetes themselves. How can they be leveraged by a Kubernetes workload? How can a Kubernetes Pod find or access their outputs? Akri is the answer,” claims Goldenring.
In terms of how it works, Akri provides an abstraction layer – similar to the Container Network Interface (CNI) – but instead of abstracting the underlying network details, it removes the work of finding, utilising, and monitoring the availability of leaf devices such as cameras, sensors and so on.
Goldenring continues and says that Akri leverages and extends the Kubernetes device plugin framework, which was originally created to focus on advertising static resources such as GPUs and other system hardware.
“Akri takes this framework and applies it to the edge, where there is a diverse set of leaf devices with unique communication protocols and intermittent availability. Akri continually detects nodes that have access to leaf devices and schedules workloads for them. Simply put: you name it, Akri finds it and you use it,” she wrote, in a Microsoft developer open source blog.