Why Are We Doing Kubernetes?
Kubernetes continues to be one of the hottest topics and skillsets in IT. It’s spoken about as the next thing we’ll all be doing. The hype is reminiscent of virtualization back in the early 2000’s. It’s a technology that holds a lot of promise, comes from a good beginning, and has wide industry support. All of those factors should mean success. But it’s how we define success that ultimately matters. We also need to be clear about which problem(s) we hope a technology solves for us.
What is Kubernetes?
Let me start with the basics. Kubernetes is an orchestration platform for docker containers. Once Docker containers became a standard for packaging application code, it became apparent that there needed to be a way to manage the complexity associated with starting, stopping, and networking those containers. For example, let’s say you always intend for 5 webserver containers to run. Kubernetes will automatically start webservers if it detects that less than 5 are running. Kubernetes does a great job of directing all the moving parts of a complex system.
Where did Kubernetes Come From?
Kubernetes started life withing Google as project “Borg.” Those old enough to remember Star Trek the Next Generation will get the reference. The software evolved into what we now know as Kubernetes. Google handed the project to the Cloud Native Computing Foundation (CNCF), and it grew in popularity eventually overtaking the other container orchestration tools of the day.
If Kubernetes is so Awesome, Why the Pushback?
It turns out that Kubernetes is complicated. There are a lot of moving parts under the hood. Simplifying container orchestration isn’t easy. Anyone who’s ever tried to follow Kelsey Hightower’s “Kubernetes the Hard Way” can attest to the intricacies associated with it. Standing up a Kubernetes stack by hand includes setup and maintenance of a number of supporting technologies along with it. But where there are problems, there are opportunities. Several vendors such as RedHat, Amazon, and Microsoft have built products that mask some of challenges with Kubernetes. Some go so far that you barely even realize that Kubernetes is under the hood.
Vendors are Solving the Kubernetes Complexity Problem; Why is There Still an Issue?
The main problem with Kubernetes is that it solved a problem faced by Google. Google folks who operated in an Site Reliability Engineer (SRE) type of environment embraced it. Google SREs needed a way to keep containers running, provide for Blue/Green deployments, and standardize how they accepted code from their developers. Most enterprises aren’t Google. The IT department of the average enterprise doesn’t have the same number of employees who have the same skillsets as Googlers. They don’t make software for a living, and they don’t always run mostly in-house developed apps. Most enterprises run Commercial Off The Shelf (COTS) software that isn’t distributed via containers. Moreover, the apps written and maintained internally aren’t architected in such a way that they can leverage containers.
There many smart IT people in the community such as Keith Townsend and Corey Quinn who have voiced concerns over the industry’s rapid embrace of Kubernetes. The average system administrator isn’t typically lobbying to get Kubernetes running because of the complexity associated. And the reality is that most system administrators run the tech needed by the developers. Recently, it was revealed that developers don’t even want Kubernetes necessarily. A recent episode of the Cloudcast Poddcast discussed this topic on show 417 - Developer Tools for Kubernetes. Developers just want to write and release code without any concern for the underlying infrastructure stack.
All of this leads us back to the central question, “Why are we doing Kubernetes?” The answer is simple. We don’t have a better option. We’re in a world where downtime is frowned upon and anything that can add speed and reliability are welcomed. Containers start in seconds where virtual machines take minutes. Containers use a lot less in terms of resources and can be packaged easier than virtual machines. Securing containers is also a bit simpler than virtual machines since the container host is the asset that gets scanned and managed instead of each individual guest. Containers hold a lot of advantages over virtual machines and Kubernetes has won as the platform for managing containers. Kubernetes will be with us for the foreseeable until a better method of delivering application code to infrastructure becomes available.
References
Sanders J. AWS billing is broken and Kubernetes won't last, says irreverent cloud economist Corey Quinn. TechRepublic. https://www.techrepublic.com/article/aws-billing-is-broken-and-kubernetes-wont-last-says-irreverent-economist-corey-quinn/. Published October 7, 2019. Accessed October 8, 2019.
Townsend K. Why Do I Hate Kubernetes so Much? The CTO Advisor. https://www.thectoadvisor.com/blog/2019/9/18/why-do-i-hate-kubernetes-so-much. Published September 18, 2019. Accessed October 8, 2019.
Image credit - Photo by Oladimeji Ajegbile from Pexels