Akri architecture map

This week’s highlighted project is Akri, which is a new project from Microsoft for building a connected edge using Kubernetes.

According to Microsoft, the edge is made up of an array of sensors, controllers, and microcontroller units (MCU) that produce data and perform actions. In order for Kubernetes to be a versatile tool for edge computing, it needs to be able to easily find those leaf devices, but many of the devices are too small to run Kubernetes themselves.

Microsoft hopes that Akri will be used to help those devices be leveraged by Kubernetes workloads. Akri provides an abstraction layer that removes the work of finding, utilizing, and monitoring the availability of leaf devices. 

It extends the Kubernetes device plugin framework that was initially created to advertise static resources like GPUs or other system hardware. Akri took that framework and applied it to the edge. It continually detects nodes that can access leaf devices and schedules workloads for them. “Simply put: you name it, Akri finds it and you use it,” Kate Goldenring, software engineer at Microsoft wrote in a post

Akri’s architecture is made of four key Kubernetes components: two custom resources (CRDs), a device plugin implementation, and a custom controller. The first custom resource, the 

Akri Configuration, is where a user tells Akri what kind of device to discover, then the Akri Agent, which is a Kubernetes device plugin framework implementation, searches for the leaf devices. Once the device has been discovered, the Akri Controller helps the user use it by deploying a broker pod that knows how to connect to the leaf device and use it. 

Users can deploy and test Akri on an edge cluster using K3s, MicroK8s, AKS-HCI or any other certified Kubernetes distribution. Microsoft has also put together a demo that walks through deployment to discovery.