Resources
The Kubernetes Book (2024 edition) by Nigel Poulton
Kubernetes Quick Start (2024 edition) by Nigel Poulton
Kubernetes Up & Running (3rd Edition)
Kubernetes Tutorial For Beginners
What is Kubernetes
Official Definition
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.
Kubernetes is an orchestrator of containerized cloud-native microservices apps.
Summary
Kubernetes is an application orchestrator that brings together different microservices and organises them into a useful application. It also provides and manages cloud-native features such as scaling, self-healing, and updates.
Kubernetes Background
Most people pronounce Kubernetes as “koo-ber-net-eez”.
Derived from the Greek word for “helmsman” or “pilot,” symbolizing control and management.
It shortened to K8s and pronounced as “kates”. The number 8 replaces the eight characters between the “K” and the “s”.
Developed by Google, inspired by its internal system Borg.
Made available in 2014, hosted by the Cloud Native Computing Foundation (#CNCF).
K8s: The OS of the Cloud
Why do we need K8s
- Container Deployments / Orchestration
Explanation
Let’s say you have a couple of Java applications. You can package it into a container and run it on a server containing a Docker engine or any container engine. For this scenario, there is no complexity.
You package your application into a Docker image using Dockerfile and expose a port on a host for the external world to access it.
However, the downside is that it can be a single point of failure, as it is only running on a single server. To handle the single point of failure, you need an efficient mechanism.
This is why you need a container orchestration tool like Kubernetes to scale applications on-demand and withstand single-node failures.
- Microservice Deployment / Orchestration 👉 SA01.6 - Microservice Architecture
Explanation
Now, let’s say, you have a big application that is composed of microservices (APIs, UI, user management, credit card transaction system, etc). All these microservice components have to talk to each other using REST APIs or other protocols.
As the application has many components or microservices, we cannot deploy all the services in one server or a container. The applications have to be decoupled and each microservice should be deployed and scaled on its own. This makes application development and deployment easier and faster.
In this scenario, the complexity lies in networking, shared file systems, load balancing, and service discovery. Here is where Kubernetes comes into the picture. It helps in orchestrating complex processes in a manageable way.
Using Kubernetes, you just have to worry about your application development and deployments.
All heavy lifting like networking, service-to-service communication across nodes, load balancing, service discovery, resource scheduling, scalability, and high availability are taken care of by Kubernetes.
K8s helps achieve the following,
- Self Healing
- Automatic Container Scheduling
- Horizontal and Vertical Scaling
- Rolling application upgrades and downgrade with zero downtime
Jargon
👉 Jargon
Quote
“Kubernetes is an orchestrator of containerized cloud-native
microservices apps.”
means: Kubernetes deploys and manages applications that are packaged as containers and can easily scale, self-heal, and be updated.
K8s & Docker
early versions of k8s shipped with docker and used it as its runtime (Kubernetes used Docker for low-level tasks such as creating, starting, and
stopping containers)
Kubernetes 1.24 finally removed support for Docker as a runtime as it was bloated and overkill for what Kubernetes needed. Since then, most new Kubernetes clusters ship with containerd as the default runtime. Fortunately, containerd is a stripped-down version of Docker optimized for Kubernetes, and it fully supports applications containerized by Docker.
In fact, Docker, containerd, and Kubernetes all work with images and containers that implement the Open Container Initiative (OCI)2 standards.
05. Container Interfaces
Most Popular Container Runtimes

Docker Swarm
In 2016 and 2017, Docker Swarm, Mesosphere DCOS, and Kubernetes competed to become the industry standard container orchestrator. Kubernetes won.
👉 02. Docker Swarm
Kubernetes
Kubernetes is the de facto1 platform for cloud-native applications, and we sometimes call it the operating system (OS) of the cloud. This is because Kubernetes abstracts the differences between cloud platforms the same way that operating systems like Linux and Windows abstract the differences between servers:
- Linux and Windows abstract server resources and schedule application processes
- Kubernetes abstracts cloud resources and schedules application microservices
In summary, Kubernetes makes it easier to deploy to one cloud today and migrate to another cloud tomorrow.
Application Scheduling
At a high level, a cloud or data center is a complex collection of resources and services.
Kubernetes can abstract a lot of these and make them easier to consume. Again, how often do you need to care about which compute node, which failure zone, or which storage volume your app uses? Most of the time, we’re happy to let Kubernetes decide.
Footnotes
-
De facto is Latin for “of fact,” meaning “in reality,” and it’s usually contrasted with “de jure,” which means “of law,” or “officially.” If you’re the de facto mayor of your town, you’re acting as mayor, even though you weren’t legally elected. ↩

