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:
- Resource management
- Scheduling
- Security
- Hardware abstraction
- Users
- Multitasking
- Networking
- 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.
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.
3. Operating systems define executable formats. For Linux this is ELF files, on Windows PE files, and on Kubernetes it is Docker containers / Pods.
