Kubernetes: The Container Manager

Aman Dev Verma
5 min readMar 15, 2021

Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
The name Kubernetes originates from Greek, meaning helmsman or pilot. Google open-sourced the Kubernetes project in 2014. Kubernetes combines over 15 years of Google’s experience running production workloads at scale with best-of-breed ideas and practices from the community.

Container technology was born in 1979 with Unix version 7 and the chroot system. A container provides operating-system-level virtualization by abstracting the “user space”.

What is Container?

Containers and VMs are similar in their goals: to isolate an application and its dependencies into a self-contained unit that can run anywhere. Moreover, containers and VMs remove the need for physical hardware, allowing for more efficient use of computing resources, both in terms of energy consumption and cost effectiveness. The main difference between containers and VMs is in their architectural approach.

Characteristics of Kubernetes

Modern applications are increasingly based on the use of containers, which are packaged microservices with their dependencies and configurations. Kubernetes is an open source software to implement and manage those containers on a large scale. It enables any number of servers of many types at the same time, separated by distance, to share workloads for a common tenant.
Most importantly, Kubernetes was designed to be used anywhere, so it can orchestrate on-site, public cloud and hybrid deployments. With Kubernetes, concrete steps can be taken to achieve better IT security. In addition, it must also be integrated with networking, storage, security, telemetry and other services to provide a comprehensive container infrastructure. This offers the simplicity of Platforms as a Service (PaaS) with the flexibility of Infrastructure as a Service (IaaS) and allows for portability between infrastructure providers.

Some of its features include:

  • The ability to automatically place containers according to your resource requirements, without affecting availability.
  • Service discovery and load balancing: no need to use an external mechanism for service discovery as Kubernetes assigns containers their own IP addresses and a unique DNS name for a set of containers and can balance the load on them.
  • Planning: it is in charge of deciding in which node each container will run according to the resources it requires and other restrictions. It mixes critical and best-effort workloads to enhance resource utilization and savings.
  • Enable storage orchestration: automatically set up the storage system as a public cloud provider. Or an on-premise networked storage system such as NFS, iSCSI, Gluster, Ceph, Cinder and others.
  • Batch execution: in addition to services, Kubernetes can manage batch and IC workloads, replacing failed containers.
  • Configuration and secret management: sensitive information such as passwords or SSH keys are stored in Kubernetes hidden in ‘secrets’. Both the application’s configuration and secrets are deployed and updated without having to rebuild the image or expose sensitive information.
  • Self-repair: restart failed containers, replace and re-program them when nodes die. Also remove unresponsive containers and do not publish them until they are ready.
  • Execution of automated deployments where changes to the application or its configuration are progressively implemented, while its status is monitored. This ensures that you do not delete all your instances at once. If something goes wrong, Kubernetes will reverse the change.

Why people use Kubernetes?

Kubernetes is an important piece of the cloud-native puzzle: But it’s important to understand that its broader ecosystem provides even more value to IT organizations.

Kubernetes eases the burden of configuring, deploying, managing, and monitoring even the largest-scale containerized applications. It also helps IT pros manage container lifecycles and related application lifecycles, and issues including high availability and load balancing.

Benefits for companies through K8s

In summary, and having seen all the above information, Kubernetes has the following benefits for companies:

  • Using Kubernetes and its huge ecosystem can improve productivity.
  • Using Kubernetes along with good native cloud technology attracts talent. For example, many software engineers want to work in companies that use modern and interesting technologies.
  • Kubernetes is a feasible solution for many years to come.
  • Kubernetes helps an application run more stably.
  • Kubernetes can be cheaper than other alternatives, especially if you have large computing resources.

CASE STUDY: Pinterest

Challenge

After eight years in existence, Pinterest had grown into 1,000 microservices and multiple layers of infrastructure and diverse set-up tools and platforms. In 2016 the company launched a roadmap towards a new compute platform, led by the vision of creating the fastest path from an idea to production, without making engineers worry about the underlying infrastructure.

Solution

The first phase involved moving services to Docker containers. Once these services went into production in early 2017, the team began looking at orchestration to help create efficiencies and manage them in a decentralized way. After an evaluation of various solutions, Pinterest went with Kubernetes.

Impact

By moving to Kubernetes the team was able to build on-demand scaling and new failover policies, in addition to simplifying the overall deployment and management of a complicated piece of infrastructure such as Jenkins. For instance, the Pinterest team reclaimed over 80 percent of capacity during non-peak hours. As a result, the Jenkins Kubernetes cluster now uses 30 percent less instance-hours per-day when compared to the previous static cluster.

The first phase involved moving to Docker. Pinterest has been heavily running on virtual machines, on EC2 instances directly, for the longest time, to solve the problem around packaging software and not make engineers own portions of the fleet and those kinds of challenges, we standardized the packaging mechanism and then moved that to the container on top of the VM.

The first service that was migrated was the monolith API fleet that powers most of Pinterest. At the same time, Benedict’s infrastructure governance team built chargeback and capacity planning systems to analyse how the company uses its virtual machines on AWS. So orchestration was something we thought could help solve that piece.

Conclusions

Adoption in the use of containers will continue to grow. You can also see some standardization around Kubernetes and Docker. This will drive the growth of a large number of related development tools.

The technology stack is starting to mature quite a bit and almost all suppliers are starting to be compatible with each other thanks to Docker and Kubernetes. Google, Microsoft, Amazon or IBM, for example, are already compatible and work under the same standard. The struggle now lies in moving all that workload that is not yet in the cloud: the hybrid cloud.

Containers are becoming increasingly popular in the software world and Kubernetes has become the industry standard for deploying containers into production. In addition, a high growth rate is expected for Kubernetes throughout this year as well.

--

--