Author: Abhay Reddy

Containers are units of software that contains the code and all dependencies so that an application can run across platforms such as desktops, data centers, and cloud. It provides an abstraction at the application layer. Each container runs as an isolated process while sharing the same OS kernel.

The application container market is expected to grow by CAGR 32% between 2020 and 2028. [Verified Market Research]

Containers | Abhay Reddy
Containers

With the explosive growth of container use, many complexities arose such as how to manage and schedule multiple containers across platforms, how to scale up, how to enable communication between them, and more. Kubernetes was introduced as a way to solve these challenges by Google in 2014. It was adopted by Cloud Native Computing Foundation (CNCF) in 2016.

Kubernetes is an open-source system for automating software deployment, scaling, and management of containerized applications. It has an expansive open-source ecosystem and is the market leader in this segment. All major players such as Google, Docker, Red Hat, Microsoft, AWS, Wind River, and VMware have adopted/supported Kubernetes.

Kubernetes Stats | Abhay Reddy

Image: Kubernetes Statistics. Source [1], [2], [3], [4]

Key benefits of Kubernetes:

  • Simplifies container management, and is highly scalable
  • Automation capabilities can handle the scheduling, and deployment of containers regardless of location (on-premise, cloud, VM, or hybrid).
  • Highly portable across multiple platforms. Deployments can be sent to one or more cloud services without losing functionality or performance.
  • It can auto-scale up or down to increase efficiency and reduce waste. Can create new containers while dealing with a heavy workload
  • Service discovery and load balancing. If traffic to a container is high, Kubernetes can load balance and distribute the traffic to ensure stability. It supports numerous third-party load-balancing tools.
  • Self-healing. Runs routine health checks and restarts or replaces containers that fail.
  • Declarative technology by using the desired state manager. It receives information about the cluster’s current state and sends instructions to move them toward the operator’s desired state at a controlled rate.
  • Allows for rolling back an application change if something went wrong
  • Has built-in logging and monitoring capability
  • In-built GUI dashboard. Makes the management of containers easier
  • Storage orchestration: Allows you to automatically mount a storage system of your choice, such as local storage or public cloud.
  • Simplified DevOps with the introduction of GitOps. Kubernetes automatically updates the deployment to match the git status in case of divergence. The git repository acts as the primary source of truth.

Kubernetes is well-suited for complex applications and large-scale deployments.

It does have some challenges

  • Official documentation can be expansive and complex.
  • Installation is complicated
  • Migrating existing applications can be a difficult process.
  • Lack of skill and training. Kubernetes has extensive functionalities and ever-increasing third-party add-ons. While this is generally positive, it can be overwhelming to folks who are starting out. The learning curve is steep.
  • Security is a concern.
  • May not be suited for simple applications and less complex workloads.

Architecture

Kubernetes Architecture | Abhay Reddy

Image: Kubernetes Architecture

Components:

  • Cluster is the highest level of abstraction in Kubernetes. It contains all the nodes, pods, and a master.
  • Master Node/Control Plane controls the deployment of pods and hence the worker nodes. It is responsible for ensuring that the cluster attains a desired state that is defined by operators in a declarative manner.
  • API Server is responsible for handling external and internal requests, and determining if a request is valid or not before processing it
  • Etcd stores the overall state and configuration of the cluster at any given point in time.
  • Scheduler distributes unscheduled pods across the available worker nodes. It tracks and ensures that the workload is not scheduled in excess of available resources.
  • Resource Controller is a control loop that monitors and regulates the state of clusters. It receives information about the cluster’s current state and sends instructions to move them toward the operator’s desired state.
  • Worker Nodes are physical or virtual machines that can run pods as part of a cluster
  • Pods are an abstraction that represents a group of one or more containers and configurations that govern how they should run. Each pod is assigned an unique IP address that allows applications to use ports without the risk of conflict.
  • Container Engine such as Docker is responsible for running the containers.
  • Kubelet receives direction from the control plane and is responsible for starting, stopping, and maintaining containers organized into pods.
  • Proxy is Responsible for routing traffic to the appropriate container based on IP and port number.
  • Service defines a logical set of pods and policies about who can access them. A service allows Kubernetes to route traffic to an application regardless of where the pod is running.

--

--

Abhay Reddy @AbhayReddy

Abhay Reddy is an accomplished growth strategy executive with proven expertise in aggressive sales growth through digital transformation.