Opening the book…
Kubernetes (often abbreviated K8s) has become the de facto standard for container orchestration. Originally developed by Google, Kubernetes is an open-source system that automatically manages deploying, scaling, and operating containers across a cluster of machines. It provides an abstraction layer so that developers declare desired state (e.g., “run 5 instances of this container, expose it on a network, ensure it restarts if it fails”) and Kubernetes’ control plane ensures the actual state matches this (using a combination of controllers, schedulers, and agents running on the cluster nodes).
Key features of Kubernetes relevant to cloud-native deployment:
- Automated Scheduling: Kubernetes figures out which node in the cluster to run each container (or group of containers called a Pod). It considers resource requirements, spreads load, and can bin-pack efficiently. This saves operators from manually deciding placement.
- Self-Healing: If a container or an entire node goes down, Kubernetes detects that and reschedules the workload elsewhere. It can automatically restart containers that crash, replace and reschedule containers when nodes die, and kill containers that don’t respond to health-checks.
- Scaling: Kubernetes supports horizontal scaling of applications. Through the Horizontal Pod Autoscaler, it can monitor metrics (like CPU or custom metrics) and add or remove container instances (Pods) to meet demand. This can be automatic (dynamic scaling) or manual via a single command or API call. Scaling can happen in seconds to minutes, allowing cloud-native apps to respond to traffic spikes.
- Service Discovery & Load Balancing: Kubernetes has a built-in service discovery mechanism (via Services and DNS) so that containers can find each other by logical names. It also balances requests across multiple instances of a service. You don’t need to hard-code IPs; Kubernetes will route to an appropriate Pod that is currently running.
- Declarative Configuration: All Kubernetes objects (deployments, services, config maps, etc.) are defined in YAML or JSON manifest files. This ties into infrastructure-as-code and versioning of environment configuration. The declarative approach means you specify what you want (e.g., “a Deployment with 3 replicas of image X”) and Kubernetes figures out how to do it.
-
Extensibility: The Kubernetes ecosystem has many extensions (Operators, Custom Resource Definitions) and add-ons (for monitoring, logging, ingress, etc.). It’s a flexible platform that can deploy not just microservice containers but batch jobs, event-driven functions, etc. It’s also cloud-agnostic – Kubernetes runs on AWS, GCP, Azure, on-premises, or hybrid.

Because of these capabilities, Kubernetes has been a game-changer for cloud-native applications. It lets teams deploy hundreds of services in a relatively uniform way on a shared cluster, achieving high utilization of resources and minimal downtime rolling updates. Virtually all major cloud providers offer a managed Kubernetes service to handle running the Kubernetes control plane and integrations with other services. On AWS this is Amazon EKS, on Google Cloud GKE, on Azure AKS.
However, Kubernetes also has a steep learning curve and can be complex to administer. Some organizations opt for simpler container platforms or even Platform as a Service (PaaS) offerings if Kubernetes is more power than they need.
This page titled 8.4.1: Kubernetes and Container Orchestration was last modified on Tue, 22 Sep 2026 21:13:43 GMT and is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Felix Amoruwa.
The book could not be loaded just now.