By Caroline Blivet
Share

What is Kubernetes: An introduction to Container Orchestration

May 22, 2020

As organizations continue their transformation journey to drive greater agility, scalability, and resiliency, they have been rapidly embracing cloud-native infrastructure which is characterized by containers, orchestration, and microservices to better meet their growing customer expectations.

According to Gartner, by 2023, 70% of organizations will be running three or more containerized applications in production, making containers, Kubernetes, and microservices the leading drivers of IT innovation and digital transformation.

With these figures in mind, no wonder Kubernetes is becoming more popular day after day. In just a few years, it has become the standard orchestration platform for containers supported by all the major cloud providers.

What is Kubernetes

Kubernetes (sometimes referred to as K8s or k-eights) is an open-source platform for container orchestration that was originally developed by Google to automate many manual processes involved in deploying, managing, and scaling containerized applications. 
 
Kubernetes has established itself as the standard for running containerized applications in the cloud and was donated by Google to the Cloud Native Computing Foundation (CNCF) in 2015, which is itself under the umbrella of the Linux Foundation.
 
Now, the main Cloud Providers (Microsoft Azure, GCP, AWS, IBM, Red Hat, and Oracle) are offering managed Kubernetes services.
 
In case you're wondering, the name Kubernetes originates from Greek, meaning helmsman or pilot.
 
If you're not familiar with Kubernetes yet, it's time to get acquainted with this complex system that will make your life easier.

What is Container Orchestration

To better understand how Kubernetes work and how your organization could benefit from them, we need to first understand the following concepts: containers, container orchestration, and immutable infrastructure.

Containers

A container is a standard unit of software that bundles code and all its dependencies to allow the application to run quickly and reliably when moved from one computing environment to another. As an example, when developers are writing code on their local development environment and are ready to move the code to production, containers solve the portability issue and allow them to make the code work on any computer that has a containerization platform.

Container Orchestration

Modern applications are increasingly built using containers and these applications are typically made of multiple containers (often called microservices) and deployed across a cluster of physical or virtual servers, which makes their maintenance and management complex and time-consuming.

Container orchestration allows managing the lifecycle of containers by automating the deployment, management, scaling, networking, and availability of container-based applications.

Immutable Infrastructure

Immutable infrastructure is an approach where servers are never modified after they are deployed. In other words, it means that if a component needs to be updated, fixed or modified, new servers are provisioned to replace the old ones. Once they are tested, validated, and made available, the old server is discontinued to free computing resources within the environment.

Virtualization across servers, storage, and networking made immutable infrastructure possible. Now, with the recent container revolution, many tools such as Docker, Kubernetes, Spinnaker have emerged to build immutable infrastructure.

 

Kubernetes vs. Docker: What's the Difference

The question Kubernetes versus Docker is actually a common misconception and comes down to comparing an apple to an apple pie.
 
Docker is an open-source lightweight containerization platform that makes it easier to create, deploy, and run applications by using containers whereas Kubernetes is an open-source orchestration platform that helps you manage a containerized application in various environments (physical, virtual, and cloud).
 
Docker can be used without Kubernetes and Kubernetes can run without Docker. However, both platforms can benefit from one another since they facilitate the management and deployment of containers in a distributed architecture.
 
The real comparison should be between Kubernetes and Docker Swarm, Docker's own open-source container orchestration platform that is the native clustering engine for Docker containers.
 
Even though Docker has developed its own container orchestration platform, they have chosen to make Kubernetes part of their community.

 

How Does Kubernetes Work?

In order to understand how Kubernetes work, you need to familiarize yourself with some vocabulary first to better understand how your Kubernetes clusters are organized.
 
A working Kubernetes deployment is called a cluster and this cluster is made of a Master Node, which runs the API Server, the Scheduler, Controller Manager, etc. In short, the Master Node is in charge of managing the Kubernetes cluster.

Kubernetes.jpg

Source: https://kubernetes.io/docs/concepts/overview/components/

Master Node (Control Plane): It is the "brain" that controls nodes in the Kubernetes cluster and schedule pods to run on nodes.

The Master Node is made of the following components

API Server: Handles all communications for the cluster

Scheduler: Monitors newly created pods and provides scheduling for pods across resources

Controller Manager: Responsible for ensuring that the shared state of a cluster operates as it should.

Etcd: Distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system/cluster of machines.

 

Nodes: In a cluster, the nodes are the machines that run your applications and cloud workflows. A node can be a virtual machine or a physical server and Kubernetes can run on both environments.

The nodes are made of three components:

Kubelets: The main Kubernetes agent that tracks the state of a pod to ensure that the containers are running.

Kube Proxy: The Kubernetes network proxy runs on each node and maintains the network rules as well as performs forwarding of traffic.

Container runtime: Responsible for running containers

 

Pods: A pod is a group of one or more containers. It is the smallest unit that Kubernetes administers and a pod includes shared storage (volumes), IP address, and how to run them. A pod always runs on a node.

If you want to learn more about the Kubernetes terminology, you can take a look at the Kubernetes Standardized Glossary.

 

What can Kubernetes do for you?

Containers paved the way to run cloud-native applications on physical and virtual environments with more flexibility and ease.

However, managing containerized applications can be challenging since they often involve multiple containers deployed across different machines. This is where Kubernetes comes to the rescue! Kubernetes provide a framework to schedule and deploy containers as well as scale them and manage their overall lifecycles. Additionally, Kubernetes is built to be used anywhere and can be deployed in different environments: public, private, or hybrid clouds, providing you with greater flexibility and resiliency.

 

What are the Benefits of Kubernetes

Kubernetes can drive significant value and remove barriers for managing and maintaining infrastructure and services while optimizing costs.

Below is a snapshot of the main benefits Kubernetes can bring to your organization.

Scalability

Kubernetes can scale up and down applications instantly based on website traffic and server load and therefore, improve app performance.

High Availability 

Kubernetes is designed to tackle the availability of both the application and infrastructure levels by adding a reliable layer of storage to ensure your workloads are highly available and preventing failures by balancing resources quickly and consistently monitoring the health of your containers.

Portability

Since Kubernetes can be deployed on any infrastructure, you can move your workloads from one environment to another (on-premises, hybrid, and multi-cloud) while maintaining consistency across your environments.

IT Cost Optimization

Containers and Kubernetes can help you cut your infrastructure costs, especially when you're running them on a massive scale. As they enable better utilization of resources than VMs, they require less CPU and memory and because it automatically scales your applicated based on your needs, it frees up your IT staff to focus on more strategic projects.

Cloud Providers Manage Kubernetes For You

As discussed above, Kubernetes have become the standard for container orchestration and is supported by the main cloud providers who offer many Kubernetes-as-a-services offerings. Azure Kubernetes Service (AKS), Amazon EKS, Google Cloud Kubernetes Engine, RedHat OpenShift, etc. provide Kubernetes platform management to help you deploy and maintain containerized apps.

 

What's Next

Kubernetes radically changed the way applications are built and deployed in the cloud and is here to stay. Even though Kubernetes provides advanced capabilities, it also comes with some challenges due to its complexity and requires taking into account several considerations to make sure it will benefit your organization, your development teams, and your IT environment.

If you'd like to learn more about Kubernetes, contact Softlanding.

 

Loading Conversation