July 2, 2023

Kubernetes Is a Cloud Operating System (Updated)

Let's stop calling Kubernetes a "container orchestrator". If you don't understand Kubernetes already, the term is just confusing. When I got started, I  didn't understand what orchestration was, or why containers need it.

Let's call Kubernetes a "cloud operating system" instead.

Is Kubernetes really an operating system?

Here are things a traditional operating system (OS) does:

  1. Resource management
  2. Scheduling
  3. Security
  4. Hardware abstraction
  5. Users
  6. Multitasking
  7. Networking
  8. Terminal services

Linux /Windows do this for individual machines. Kubernetes does it for whole datacenters (clusters).

What OS-like responsibilities does Kubernetes handle?

I'll give three examples:

  1. Scheduling: on Linux, processes are scheduled to CPUs. On Kubernetes, Pods are scheduled to Nodes. Different operations, but both achieve the same purpose: sharing resources between applications running on the same "hardware". ("Hardware" in the Kubernetes sense means the cluster as a whole.)
  2. Hardware abstraction: With Linux, applications can write to files without caring about the harddisk manufacturer. With Kubernetes, Pods can write to a PersistentVolume the same way on AWS, GCP, and Azure. The underlying storage (e.g. EBS) is different, but the app doesn't need to care.
  3. Operating systems define executable formats. For Linux this is ELF files, on Windows PE files, and on Kubernetes it is Docker containers / Pods.

Here are more parallels:

Closing Notes

Does this analogy make Kubernetes easier to understand? Can we drop the term "container orchestrator" for good?

Let me know on LinkedIn or Twitter.

Never miss a blog post.