If you are engaged with the general IT community that deals with infrastructure, virutalization or cloud, you have probably heard the comparison between Kubernetes and Virtualization. The narrative goes something along the lines of “Kubernetes will have the same level of impact on IT as what Virtualization had”. That is to say that Kubernetes is to virtualization, what virtualization was to physical infrastructure. That is a pretty bold statement, but one which is the most the relatable in order to make IT Operations people aware that Kubernetes is something requiring time and effort to learn as it gains more of a foothold in modern IT.
I’ve been in a lot of discussions over the past two to three years about the state of Kubernetes and I realised, looking back at this blog, that I have been talking about the state of containers for longer than I had thought. In fact, here is a post that I wrote in May of 2015 on the subject. This quote probably still resonates today and explains still why Kubernetes and containerization hasn’t reach mass market adoption just yet…
We live in a “legacy” world today because the generation of coders that create and produce the applications we consume today know about how best to exploit the tools they learnt with…There will be a shift…and I believe a dramatic one to 3rd platform apps when the current generation of university students graduate and get out in to the world and start to develop and create applications based on what they know best.
Legacy, is a relative term and in our industry can be used as a dirty word. In the real world of IT, legacy doesn’t mean old and out of date… it actually means stable and working. That said, we have hit a period of technical acceleration which has been fuelled by modern applications and modern application platforms. Recent conversations that I have with leaders in the Kubernetes/CNCF space have made it clear that the tide is turning and that those older school devs are being replaced for new cloud native developers who think of applications in a completely different way.
Like many of us i’ve kept Kubernetes and devops at relative arms length until the last year or so, though i’ve always been connected to automation which does go hand in hand with modern infrastructure, infrastructure deployment and management. With Veeam’s acquisition of Kasten back in October of 2020 the soapbox presented its self overnight and we, as company, had a very very good story (and some brilliant software technology) to talk about Kubernetes backup and disaster recovery. So with that I personally needed to accelerate my Kubernetes understanding… something that I know a lot of my peers have been doing or have done.
In comparing Kubernetes to Virtualization… this is how I see the state of play:
How Virtualization Delivered
Virtualization if Life! Well, it was… and still very much is! What virtualization did was fundamentally change the datacenter. It took advantage of compute resources that where being wasted with the acceleration or Moore’s Law and consolidated server infrastructure down to be as extremely efficient while also unlocking true mobility of workloads to make them portable between physical servers, and also (with some form of middleware) between platforms. The more virtual CPUs you could pack per physical core, together with shared memory, shared storage, and later, network virtualization lead to cloud computing at scale which gave way to the public cloud giants, which enabled Software as a Service, Platform as a Service and finally what you see today. It also accelerated automation and Infrastructure as code which went hand in hand with continued API improvements.
So without virutalization… you don’t get Kubernetes and containerization.
What Kubernetes Delivers
Fundamentally as I have come to understand Kubernetes as a utility control plane that accelerates the cycles involved in developing modern applications and what is involved to create, test, validate, deploy, manage and upgrade them to make them available for purpose. It is also being put into use a level up to manage Infrastructure. VMware Tanzu is a prime example of this where Kubernetes is managing Kubernetes, and more recently, can also orchestrate VMs deployments. All of a sudden the underlying dependancies of a VM which in turn is tied to an OS are gone. What you don’t have here is the de-coupling specifically of compute, storage and networking… though it is abstracted and in the case of storage, the layer becomes databases and persistent storages. External networking and load balancing becomes abstracted with easier configuration and management to handle frontend and backend networking. This leads to compute abstraction which is linked to monitoring for load and having the ability to scale up and down as load does.
Portability of workloads then becomes easier and this is means that the tide shifts to the applications and .
Why that Matters
Developers have the power and freedom to develop applications almost agnostically, knowing that it can transcend underlying infrastructure platforms… and to my point from my 2015 article quoted above, that shift has well and truly happened because that generation of students/coders is now out in the real world and they are the ones developing the new cloud native applications that power new business and startups. What we also have seen is the acceptable of Kubernetes through what the public cloud giants have pushed. Google, AWS and Azure have made it east for developers to do things in easily deployable, scalable Kubernetes clusters. Enterprises, however are looking to run Kubernetes locally under tighter, more traditional controls. OpenShift is a great example of this and is becoming more popular on-premises.
In terms of Managed Kubernetes, there has been a number of companies offering platforms that do end to end management of Kubernetes without the requirements of having to be in the public cloud to take advantage of the cloud delivery models. What I have seen as well is an uptake of interest in second tier service providers looking to build Managed Kubernetes services. All of a sudden the devs don’t have to default to the public clouds and the more traditional IT operations people can manage containerized deployments much like how they manage virtualization. Kubernetes enables this.
This all adds up to a hybrid world of on-premises, physical and virtual infrastructure together with more as a Service offerings. Kubernetes has matured, but it’s not got wide acceptance or use within the majority of organizations just yet. some might argue there, but it still has a long way to go before mass adoption happens. The undercurrents are getting stronger though. The wave that was virtulization had a profound, seismic impact on the IT world. I’m not sure Kubernetes should be thought about as the next virtualization wave, but I do believe its impact has been… and will be significant.
It is a hybrid world!