1. What is Kubernetes?
Kubernetes, also known as K8s, is an open source system for automating deployment, scaling, and management of containerized applications.
2. Orchestration
An orchestrator is a system or platform designed to deploy applications and adapt dynamically to changes. Kubernetes abstracts the infrastructure. For example, Kubernetes is capable of the following:
- Deploying applications
- Adjusting their scale up or down according to demand
- Automatically recovering from failures
- Executing rolling updates and rollbacks without downtime
The best part is that Kubernetes handles all of this autonomously. After a one-time configuration setup, you can simply sit back and let Kubernetes manage everything seamlessly.
3. Containerization
Containerization is a method of packaging an application along with all its dependencies—such as libraries, configuration files, and binaries—into a single lightweight, isolated unit called a container. These containers run consistently across different computing environments, whether on a developer’s local machine, a test environment, or a production server.
Containers ensure that applications are portable, resource-efficient, and independent from the underlying system. Unlike traditional virtual machines, containers share the host OS’s kernel, making them lighter and faster to start up. Tools like Docker are commonly used to create, manage, and deploy containers, while orchestrators like Kubernetes help manage containers at scale.
4. Cloud native
Cloud-native is an approach to designing, building, and deploying applications that fully leverage cloud environments. Cloud-native applications are specifically built to take advantage of the scalability, flexibility, and resilience offered by cloud platforms. Key features of cloud-native applications include:
- Microservices Architecture
- Containerization
- Dynamic Orchestration
- DevOps and CI/CD
- Automation and Observability
5. Kubernetes – History
Borg and Omega (2000s)
Google initially developed a proprietary system called Borg
to manage its large-scale applications, followed by a more refined system, Omega
. Borg
and Omega
pioneered many concepts, such as container management, service discovery, and auto-scaling, which later inspired Kubernetes. Kubernetes is not an open-source version of Borg or Omega. You can say that Kubernetes was build of the concept and learnings of Born and Omega.
A group of Google engineers developed Kubernetes partly as a response to the rise of Amazon Web Services (AWS) and Docker. AWS revolutionized cloud computing, pushing other tech companies, including Google, to catch up. Google had built its own cloud infrastructure but needed a way to make it easier for customers to transition from AWS to Google Cloud. Google also managed massive-scale applications like Search and Gmail, running billions of containers weekly.
Meanwhile, Docker had sparked a containerization wave, creating a need for tools to manage the rapid growth of container use. In 2014, Google publicly announced Kubernetes as an open-source project on GitHub. Google collaborated with the Linux Foundation and other tech giants like Red Hat and IBM to support the project. The first release of Kubernetes (version 0.1) was made on GitHub, quickly gaining traction due to its roots in Google’s proven internal systems.
Formation of the Cloud Native Computing Foundation (CNCF) (2015)
Google donated Kubernetes to the CNCF, a nonprofit under the Linux Foundation, to encourage industry-wide adoption and provide governance. CNCF became responsible for maintaining Kubernetes and promoting cloud-native ecosystems. Kubernetes saw massive adoption in the tech community, with contributions from companies like Amazon, Microsoft, and IBM.
6. Kubernetes and Docker
Early versions of Kubernetes came bundled with Docker as its runtime, meaning Docker handled core tasks like creating, starting, and stopping containers. Over time, however, two significant changes occurred Docker grew more complex and resource-heavy, while many alternative container runtimes started to appear. In response, the Kubernetes project developed the Container Runtime Interface (CRI), allowing the runtime layer to be easily swapped or configured.
In Kubernetes 1.24 the Docker as runtime was removed. Since then, most new Kubernetes clusters ship with containerd
(pronounced as “container dee”) as the default runtime. containerd
is a stripped-down version of Docker optimized for Kubernetes, and it fully supports applications containerized by Docker. containerd
like Docker work with images that implement the Open Container Initiative(OCI) standards.
7. Kubernetes – The name
The name Kubernetes comes from the Greek word for helmsman, or one who steers a ship. This is reflected in its logo, a ship’s wheel. Most people pronounce Kubernetes as “koo-ber-net-eez”. You’ll often see it shortened to K8s and pronounced as
“kates”. The number 8 replaces the eight characters between the “K” and the “s”.
8. Kubernetes – The OS of the cloud
Kubernetes is often called the operating system of the cloud because it provides a unified way to manage and orchestrate applications across different environments, similar to how an operating system manages resources on a single computer. Just as an OS manages processes, memory, and storage on a device, Kubernetes controls containers and resources in a distributed cloud environment, coordinating tasks across servers and data centers.
You can deploy applications on Kubernetes without worrying about whether they’re running on AWS, Azure, Civo Cloud, GCP, or your on-premises data center. This flexibility makes Kubernetes essential for:
- Hybrid cloud
- Multi-cloud
- Cloud migrations