What is LOKI?
What is LOKI and how does it help you run modern cloud infrastructure more smoothly
You may have heard of LAMP, a technology stack comprising Linux-Apache-MySQL-PHP, usually delivered as a Linux host with an Apache web server configured with installed instances of a MySQL database and the ability to run PHP scripts. LOKI is a similar concept: but rather than focusing on running web applications, LOKI focuses on the infrastructure. A LOKI stack is a Linux-OpenStack-Kubernetes Infrastructure, and represents Linux hosts with one of two infrastructures (or both) on top.
Kubernetes on OpenStack
When Kubernetes was first becoming popular, there was a bit of concern in the OpenStack industry that OpenStack would be replaced, but there was no need for it; the reality is that Kubernetes has to run somewhere.
Sure, you can go ahead and put together a brace of bare metal servers, rack and stack them and set up networking, and run Kubernetes on it. Or you can run Kubernetes on a series of OpenStack Virtual Machines and get the advantage of being able to control the creation and management of new hosts using the OpenStack API.
Figure 1: Kubernetes on OpenStack
As you can see in the figure, we have a Kubernetes cluster, and each Kubernetes "node" resides on an OpenStack Virtual Machine, but as far as Kubernetes is concerned, it might as well be a bare metal node. The OpenStack VM is running on a Linux server, in this case.
Kubernetes has support for OpenStack as a provider, just as you can use Amazon Web Services or Azure as a provider; for example, you can configure Mirantis Container Cloud to use OpenStack as a provider for your Kubernetes clusters.
OpenStack on Kubernetes
The other way to use OpenStack and Kubernetes together is to reverse the two layers so that instead of Kubernetes taking advantage of OpenStack, OpenStack takes advantage of Kubernetes.
OpenStack itself is an extremely complex application, you see, and for many years it had a reputation for being ... let's just say "fragile," The LOKI architecture changes all that, however, as the different components can be broken out into individual services that run in containers, each of which can be managed by Kubernetes. For example:
Figure 2: OpenStack on Kubernetes
In this case, you have a Kubernetes cluster hosting individual Pods, each of which represents an OpenStack service. (Yes, this is a very simplified version, but you get the idea.) These OpenStack services then create virtual machines, which also run as Pods.
The Kubernetes nodes run on hosts that can be bare metal Linux hosts, or, just to blow your mind a little, can also be OpenStack VMs.
In this architecture you get two distinct advantages:
Reliability: If for any reason a service falls over, Kubernetes will create a new instance, so users will never know that there was an issue.
Scalability: Kubernetes specializes in scalability, enabling you to to create multiple instances of a service, and to scale up as necessary, either manually or automatically based on usage.
Mirantis OpenStack for Kubernetes is an example of OpenStack on Kubernetes; Mirantis Container Cloud installs a containerized version of OpenStack on a Kubernetes cluster so that it can take advantage of these and other benefits.