Why Kubernetes will last another 50 years
From mainframes to PCs to smartphones to clouds and beyond. Robusta.dev CEO Nathan Yellen talks about Kubernetes and the future of cloud computing. Learn why Kubernetes is more than just a container orchestration platform, it’s the cloud standard for the next half century.
Posted by Nathan Yellin, Robusta.dev CEO
Free translation. Machine translation here.
The advantages of Kubernetes as a container orchestrator have been widely known since its introduction in 2014.
There are many such benefits
Kubernetes is declarative and allows you to focus on what needs to happen rather than how it happens.
Kubernetes allows for the separation of concerns by giving development teams the high-level API they are working on (like yaml files) without having to worry about operational issues like maintaining the control loop.
Kubernetes has a large and rapidly growing ecosystem for workflows on top of containers in any domain. For example, you can run machine learning workflows with Kubeflow.
Kubernetes supports agile methodologies such as rapid development, continuous integration and deployment (CI/CD), and production rollbacks.
Kubernetes provides consistency across development, testing, and production environments.
I could talk all day about the benefits that Kubernetes offers to both medium and small businesses. With the open source Kubernetes, Google has made it possible for every developer in the world to use top-notch tools. It continues the cloud revolution started by Amazon when they launched AWS, this time improving the software side rather than the hardware side.
However, let’s look at Kubernetes from a completely different perspective.
Kubernetes as a cloud operating system?
Kubernetes is a container orchestrator, but what is a container orchestrator? To answer this question, let’s go back in time.
Imagine that it is the end of the 70s and you have just created the world’s first operating system for personal computers. How do you sell it?
Perhaps you call it a “process organizer” because the operating system allows you to run multiple processes at the same time and arranges them in such a way that they do not interfere with each other. No, don’t like the name? Well, the term “operating system” was chosen and has since caught on.
The fact is that the operating system manages several processes running on the same computer. It allows you to run the same application on equipment from different manufacturers. It abstracts the hardware from the application developer.
Kubernetes does all this and more, but now the machine is the whole data center in the cloud, and the hardware is a cloud provider like AWS or GCP.
This may seem a bit far-fetched to some – and let me be clear – I don’t believe that Kubernetes as an OS for cloud computing will make other operating systems like Linux or Windows obsolete – they are still here to stay.
Also, every node in the Kubernetes cluster is still running Linux. But if you zoom out and look at the data center as a whole, you will see that it also has an operating system, and that operating system is Kubernetes.
Why do we need a cloud OS?
Let’s take a look at the macro reasons why organizations move to the cloud and why standardization is so compelling.
Scalability – up or down, on demand, and a pay-as-you-use model makes cloud computing the ideal solution for most organizations. Ease of use along with self-service capability means costs are lower and efficiency is maximized.
It started with the transition to virtualization, but containers have accelerated the process by reducing the impact of each individual workload. Containers reduce the minimum computational unit to that of a single application, rather than the entire operating system containing the application.
However, all of these containers need to be managed in the same way that processes on a single machine need to be managed. In addition, the underlying infrastructure itself must be managed and distributed in a fair and efficient manner. Finally, you must maintain the freedom to move between the main clouds and avoid being tied to a vendor (vendor lock).
These are all operating system concerns, from resource management to scheduling to hardware abstraction.
Massive paradigm shift
We’ve seen this before. When mobile phones first appeared, so did mobile operating systems such as Android and iOS. Prior to that, when the world moved from mainframes to personal computers, Windows and other PC operating systems were invented.
In each case, a change in the computing paradigm resulted in the need for a new operating system to meet the needs of the new platform.
What gives the OS?
At a high level, the operating system manages resources, period. In more detail, there are physical resources like your disk, GPU and memory and virtual resources like files and users.
The operating system takes all these resources and manages them. It divides them fairly and efficiently between different processes.
Time is also a resource. The operating system allocates CPU time to running processes using a centralized scheduler.
The operating system is also responsible for moving data in and out of memory, it provides a portal to terminal services, and, of course, it often (though not always) comes with a graphical interface to make things easier for operators (or more modernly: users). Speaking of users, operating systems manage their access rights and provide security.
From this point of view, the concept of Kubernetes OS makes more sense, since all these services are provided by Kubernetes in the context of your data center.
Kubernetes Operating System Parallels
Let’s make a few substitutions to make the analogy more natural. For example, we can compare Linux processes and threads to pods and containers in Kubernetes. We can compare processors with nodes. Therefore, scheduling processes for the CPU is now equivalent to scheduling pods for nodes.
The core philosophy of Linux is that “everything is a file”. In Kubernetes, the equivalent of this is “everything is a yaml resource in etcd” or “everything is a CRD”. This is also a form of standardization that operating systems use to make life easier for users and developers. On Linux, every file works with a standard API, so any resource can be opened and written to in the same way. In Kubernetes, everything is an etc resource and it has similar benefits.
When it comes to hardware abstraction, parallels can again be drawn. Linux uses drivers to access various hard drives, and k8s works the same way with CSI plugins. This allows you to access storage without worrying about cloud drive configuration.
Looking to the future
In the 80+ years since the concept of the computer and then the operating system, there have been only a few major paradigm shifts in how we use computers, but each has had a profound impact on our daily lives.
Everyone remembers when Windows and Macintosh PCs first became available. Everyone also remembers when smartphones with iOS and Android first became available. Now, with the shift to cloud computing, Kubernetes is driving a similar shift in tectonic proportions. Like Windows, Linux, iOS, and Android, Kubernetes isn’t going anywhere!
Kubernetes: what are the key benefits for companies?
Operating systems, application software and programming languages
7 Software Deployment Problems (and How to Solve Them)
The Past, Present and Future of Kubernetes with Eric Brewer
YAML Tutorial: Everything You Need to Get Started in Minutes
Brief history of operating systems
When everything is in the cloud, does the OS matter?
Cloud operating system (cloud OS)