Hi Folks,

It's been a while since I posted here last time. I've not been involved with
either hardware or embedded systems in general lately. I mostly work on
cloud-native infrastructure, and the Kubernetes project.

Kubernetes [1] is an open-source container orchestration system, and
many people see it as the best abstraction and management layer for
running applications in any cloud provider, and bare-metal or virtual
machines. Kubernetes naturally allows clusters with any kind of hardware,
as long as it can be used with Linux. In some cases certain applications
benefit from certain hardware features. When user deploys an app [2] to
a Kubernetes cluster, they can express an intention that certain apps have
particular hardware needs, and they would do so by means of labels [3].

An example: you have some number of machines running Kubernetes.
Some machines have faster storage then others, and a few have GPUs.
You have apps that don't care where they run, but you also have apps
that access data on disk very often, e.g. a database. You also a have
apps that crunch data using GPUs. So you want to put these apps in
the right places without having to care where exactly they run and get
best utilisation you can out of hardware you have, in fully automated
manner. Kubernetes will take care of this for you.

Why could this be of interest? The most recent version of Kubernetes
(v1.10) supports device plugins [4], which is a mechanism for making
any kind of hardware discoverable and allocatable.

If folks here are interested to hear more, I'm happy to connect in-person,
or present at the meetup.


Ilya 

[1]: https://kubernetes.io/
[2]: https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/
[3]: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
[4]: https://kubernetes.io/docs/concepts/cluster-administration/device-plugins/