By David “Mac” McDaniel
You’ve seen the memes.
With more and more companies embracing container technology, Kubernetes, also known as K8s, has become the standard for deploying and operating containerized applications.
Among the reasons Kubernetes has seen widespread use is its flexibility and open-source approach. However, on the flip side, it’s an ever-changing platform with a complex landscape, making adoption daunting for some — especially without a containerization strategy that’s clearly mapped to business goals.
In this article, we’ll explore:
- Why use Kubernetes
- What Kubernetes is
- The benefits of using Kubernetes
- The challenges of adopting Kubernetes
Why Use Kubernetes
To understand what Kubernetes is and why we use it, we need a quick history lesson.
Before virtualization, companies ran applications on physical servers, which sometimes made it challenging to allocate resources. For example, if multiple applications were running on a single server, one application could take up the bulk of resources while others underperformed. Companies would then run each application on a different server, but this solution was, of course, hard to scale.
That’s how virtual machines (VMs) came about. With virtualization, you could run several VMs on a single physical server and distribute resources more evenly. The only obstacle was that teams needed a more lightweight and portable solution to stay agile.
To solve this, containers were developed. Like VMs, a container has a filesystem, CPU share, memory, and process space. The main difference between the two is that containers have stronger isolation properties and are decoupled from the underlying infrastructure, making them portable across environments.
However, container runtime operation requires a lot of management – that’s where Kubernetes comes into play. To run and manage containers with minimal downtime, Kubernetes provides the structure to automatically scale and deploy your containers.
What Is Kubernetes?
There are a couple of definitions to know.
Kubernetes is an open-source, container-orchestration platform developed by Google in 2014. Engineers and developers use it to manage containerized workloads and services. Kubernetes facilitates both declarative configuration and automation. It basically ensures that your containers are running as they should be and scales them up and down as needed.
A Kubernetes cluster is a set of node machines for running containerized applications, and it’s what makes Kubernetes special. Instead of having containers tied to an individual machine, they’re able to run across a group of machines, hence the name cluster.
Most major cloud players provide a Kubernetes-compliant offering for managing, deploying, and scaling clusters. For example, Google Cloud offers Google Kubernetes Engine (GKE) while AWS offers Amazon Elastic Kubernetes Service (Amazon EKS).
The tools provided by Kubernetes enables you to:
- Automate bin packing
- Automate rollouts and rollbacks
- Orchestrate a storage system across local machines and clouds
- Automatically restart, replace, or eliminate containers that don’t pass a health-check
- Manage sensitive information without rebuilding container images or exposing secrets in your stack configuration
The benefits of Kubernetes are many. At a high level, the advantages include:
- Flexibility: Kubernetes is highly configurable. It works with almost any container runtime and any infrastructure, whether it’s a public cloud, private cloud, or on-premises server.
- Multi-cloud friendly: Given its flexibility, Kubernetes is able to host workloads spread across several clouds, making it an excellent tool for companies taking a multi-cloud approach.
- Increased productivity: Kubernetes facilitates declarative configuration and allows for GitOps, enabling teams to scale and deploy faster than ever before.
- Open source: Kubernetes is community-led and fully open-source, helping developers and engineers to collaborate and innovate quicker.
- Widely-used: Most developers and engineers know Kubernetes, which helps lower the learning curve for companies new to the platform.
As with any new tool, there are few things to keep in mind to make your adoption of Kubernetes easier:
- Managing and configuring clusters: Kubernetes cluster computing structures can be less-than-transparent, sometimes making cluster management a challenge. However, more and more automation tools are emerging to make them easier to manage and configure.
- Complexity: The Kubernetes ecosystem is vast, and you’ll need to get a lay of the land and figure out what tools can be implemented with your infrastructure. Tools like GKE and Amazon EKS can be helpful for implementing a Kubernetes strategy.
- Moving parts: With added complexity, more moving parts means more opportunity for error. Take advantage of the features Kubernetes provides for reducing errors like health checks and rolling deploys.
- Knowing projects from features: The main benefit of open-source technology is that it allows developers and engineers to create together. However, keep in mind a project is a tool still in development, while a feature is Kubernetes-approved. A rule of thumb: If it isn’t in GitHub, it’s not an official Kubernetes feature.
While Kubernetes can present some challenges at the outset, it offers clear benefits and stands apart from other orchestration tools in many ways.
Ready to make Kubernetes part of your strategy? Talk to us about using Google Kubernetes Engine for implementing Kubernetes in your organization.
Read next: Google Anthos Explained