Kubernetes is the POSIX of the cloud

updated on 12 April 2022

By Natan YellinRobusta.dev co-founder

I should have paid more attention to my operating systems course in university. I thought I knew it all, given that I already wrote kernel modules. I was wrong of course.

So when asked what an operating system is, I just refer to MIT's course. Here is a snippet:

What do applications want from an O/S?

  • Abstract the hardware for convenience and portability
  • Multiplex the hardware among multiple applications
  • Isolate applications to contain bugs
  • Allow sharing among applications

Here's the thing: with microservices, applications no longer run on single machines. The machine is your entire data center. So what does an operating system for datacenters look like?

Kubernetes, of course! Here's a comparison:

kubernetes-posix-mk9cv

Obviously Kubernetes isn't replacing POSIX here, but it is providing similar APIs at a higher abstraction layer - that of the datacenter, not the individual machine.

POSIX not UNIX

Kubernetes is POSIX not UNIX, because there isn’t one Kubernetes. It's an API, not an implementation.

You can run Minikube, KIND, K3s, OpenShift, GKE, EKS, or AKS. They all support the same YAML specs, but the implementation details can differ.

Like every operating system, Kubernetes supports different hardware using drivers. You can apply the same LoadBalancer resource to different Kubernetes distributions. On EKS it will be implemented one way, on GKE another. Same with CSI (storage) drivers.

Operating systems also define executable formats. In Kubernetes case, this is Docker containers.

Making Kubernetes Boring

The best thing about Linux is that it's boring.

You can develop and use Linux without being a kernel expert. This is hugely important.

We're not yet there with Kubernetes. The number one complaint people have about Kubernetes is complexity.

If Kubernetes is POSIX then we're missing both glibc (the C standard library) and the rest of usermode.

With Robusta.dev we're providing that missing part, but we've chosen to do it our own way.

Unlike other Kubernetes platforms, we're NOT abstracting away the underlying details or hiding them from you. You bring your existing Kubernetes cluster, running wherever you choose, and we provide usermode utilities that can streamline it.

No one succesful has made POSIX simpler by removing APIs or forcing you to use their hardware. So that approach wont work for a Kubernetes POSIX either. Also, it has to be open source.

What a Kubernetes usermode should include

I recently asked on Twitter what the hardest part of Kubernetes is. The anwers were all about monitoring, cluster management, troubleshooting, and observability.

Those are the exact areas we've chosen to focus on with Robusta.

Prometheus does a great job gathering metrics, but that's only part of a holistic monitoring solution. Robusta complements that, fills the observability gap, and automates day 2 operations.

We're providing re-usable utilities, just like traditional UNIX commands, to simplify monitoring, management, troubleshooting, and observability.

Want to learn more? Check out our docs or GitHub.

Spread the love by sharing on LinkedIn or Twitter, and HN.

Read more