I've argued before that Kubernetes is a cloud operating system. The argument goes like this:
Conceptually, both datacenters and individual machines need software to manage their resources, scheduling, hardware, and so on. For individual machines we call this an operating system. When you have a bunch of machines working together, Kubernetes fulfils the same role on a higher abstraction layer.
But the analogy goes further. There are now Kubernetes variants which satisfy the same API, while adding functionality or changing the underlying implementation.
Kubernetes is POSIX of the cloud
Here are some Kubernetes implementations:
- Minikube
- KIND
- K3s
- OpenShift
- GKE
- EKS,
- AKS.
These all have the same API (in YAML) but implementation varies.
Just like POSIX provides a universal API to open files on any hardware, Kubernetes provides a universal API for allocating load balancers or persistent storage. On EKS it will be implemented one way, on GKE another. But the API is standard.
Closing Notes
What can we learn from the history of UNIX and POSIX? When open source operating systems succeed, do they inevitably attract commercial vendors who spin off their own flavors? Does the user benefit from increased choice and some level of compatibility between the offerings?
Let me know what you think.