How does Kubernetes impact the cloud landscapePosted on June 26th, 2020
Kubernetes is quickly becoming the go-to tool for managing complex cloud-based applications. While it’s evolved rapidly in the past 5 years, the core offering is simple: manage your cloud infrastructure using code, and do so in a way that’s DevOps-friendly and makes it easy to scale. In this post, we’ll take a quick tour through Kubernetes (or k8s as the in-the-know refer to it) to understand why it’s so popular and why it’s changing the playing field for enterprises in the cloud.
From Nodes To Pods
The essential idea of Kubernetes is quite simple: you package your code using an industry-standard container tool (such as Docker), and configure your servers to host the containers. The servers are referred to as nodes, and the code as pods. Kubernetes manages the rest, everything from assigning pods to the nodes that will run them, to handling the scaling when you need to launch more copies of a pod.
The concept is very simple, but that’s what makes it so powerful. It takes the wildly successful idea of containerization and uses it as a building block for applications. Once your code is running in a container, it can be copied as many times as needed for your scaling, or deployed on as many distributed nodes as you need for reliability.
We’ve talked before about the concept of infrastructure-as-code, and Kubernetes is the standard-bearer for this concept. All the configuration is easily stored in shareable pieces of code, using the standard YAML language to describe infrastructure and express how new code should be deployed. That means deployments can have comments, can be audited and tied to specific snapshots, and easily rolled back to a specific version.
On top of those benefits, Kubernetes is catching on because it’s part of the new cloud-native generation of applications. Kubernetes was created at Google to develop scalable infrastructures that can handle Google-level traffic. But the core concepts allow you to leverage the simplicity and power of Kubernetes at any level, from one node to one million.
So what does that translate to in terms of benefits for your organization? First, a high priority for many enterprises these days is being cloud agnostic. The ability to move your infrastructure seamlessly from one provider to another gives you freedom to adapt and innovate, and leverage different benefits from different providers.
Kubernetes allows you to do this easily. Because your code is simply running on undifferentiated nodes, it doesn’t really matter whether the node corresponds to an AWS server, an Azure server, or special hardware provisioned in your own data center.
On top of that, Kubernetes includes tooling for modern DevOps priorities, like managing deployments. Kubernetes offers several improvements over the previous generation of continuous deployment tools. First, it has built-in support for complex rolling deployments. These allow you to deploy changes to your code with no downtime. You can deploy your new pods slowly on a few nodes in your cluster, then redirect incoming traffic to them.
Not only does this make it possible to deploy without scaling down, it also allows you to catch bugs early by evaluating the results from traffic that gets sent to the new pods. Moreover, Kubernetes even allows you to do more advanced deployment, like integrating A/B testing into your deploys.
Because your code is carved up into pods, your application is automatically divided into separate components. You can use this to deploy different versions of these components in A/B tests, or to slowly change individual components or subcomponents. Kubernetes incorporates some pretty advanced logging and metrics, so you can ensure you’re leveraging the incoming data from your A/B tests as you make your decisions.
Finally, because Kubernetes is quickly becoming as foundational as Docker in the new cloud-native web, it’s becoming a platform for other tools. In the past few years, Kubernetes has started seeing investment from other developers. Different cloud providers are building plug-ins for Kubernetes that let you handle storage, manage multi-cloud or hybrid-cloud setups, and more. We’re also seeing new tools being built on top of Kubernetes, such as Istio, a microservices management framework.
What does all this mean for the cloud computing landscape? A few things. First, as cloud-native tooling improves it, being on the cloud becomes an indispensable part of having a modern application. Kubernetes offers powerful tools for managing deployments, testing, and security but they’re designed around cloud deployments.
Second, cloud-native tooling like Kubernetes is a great way to avoid vendor lock-in. Tools that treat AWS, Google Cloud, Azure, and all the other providers as interchangeable allow you as an enterprise to pick and choose, saving you money and keeping you flexible.
Finally, the pace of cloud innovation continues to grow. Kubernetes is just the opening salvo in the world of the cloud native tooling. As infrastructures grow more complex and providers keep on competing to help make the cloud more accessible, new tools will emerge that leverage Kubernetes and other cloud tools to show what new things are possible in the cloud.