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-d... [3]: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ [4]: https://kubernetes.io/docs/concepts/cluster-administration/device-plugins/