What is Kubernetes?
The official definition: Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, networking, and management of containerized applications.
The simpler version: Kubernetes is a manager for your containers. Docker creates containers; Kubernetes manages them. Running docker run nginx gives you one container on one machine — but Docker has no answer for who keeps thousands of containers healthy across hundreds of servers. That's Kubernetes' job.
A useful analogy is a large hotel: 500 rooms, 300 employees, 1,000 guests. The owner can't personally assign rooms, handle complaints, replace staff, and maintain services — so they hire a manager who does all of it. Docker builds the rooms; Kubernetes is the manager who runs the hotel.
Without Kubernetes With Kubernetes
Docker Developer
├── Container │ deploys the application
├── Container ▼
├── Container Kubernetes
├── Container ┌───┼───┐
└── Container ▼ ▼ ▼
Container Container Container
Everything managed manually Everything managed automatically
Why the Name?
"Kubernetes" comes from the Greek word for helmsman — the person who steers a ship. That's also why the logo is a ship's steering wheel: Kubernetes steers your applications. You'll often see it abbreviated K8s (K, then 8 letters, then s).
A Short History
Kubernetes grew out of Borg, Google's internal system for scheduling millions of containers a week across its data centers. Google open-sourced the ideas as Kubernetes in 2014 and later donated the project to the Cloud Native Computing Foundation (CNCF), which maintains it today.
Every major cloud offers it as a managed service — Google Cloud, AWS, Azure, Oracle Cloud, IBM Cloud, DigitalOcean — and it runs production workloads at Netflix, Spotify, Airbnb, Uber, LinkedIn, Pinterest, Adobe, PayPal, and Shopify. When you stream a movie tonight, there's a good chance a Kubernetes cluster is serving it.
What Can Kubernetes Do?
- Deploy applications from declarative specs
- Self-heal — detect a crashed container and replace it automatically
- Scale applications up and down with load
- Load balance traffic across container replicas
- Roll out new versions with zero downtime, and roll back failed ones
- Manage networking, storage, and service discovery between components
The one-line memory trick worth keeping for the rest of this course:
Docker creates containers.
Kubernetes manages containers.
Setting up a Local Cluster
# Install kubectl
brew install kubectl
# Option 1: kind (Kubernetes in Docker) — recommended for CI
brew install kind
kind create cluster --name dev
# Option 2: minikube — recommended for learning
brew install minikube
minikube start
# Option 3: Docker Desktop
# Enable Kubernetes in Docker Desktop → Settings → Kubernetes
# Verify
kubectl cluster-info
kubectl get nodeskubectl Essentials
kubectl is the CLI you'll use for everything. These commands will make complete sense by the end of Day 1 — skim them now, and come back as a reference:
# Get resources
kubectl get pods
kubectl get pods -o wide # show node + IP
kubectl get pods --watch # stream updates
kubectl get deployments
kubectl get services
# Describe (human-readable detail + events)
kubectl describe pod my-pod
# Logs
kubectl logs my-pod
kubectl logs -f my-pod # follow
# Execute into a pod
kubectl exec -it my-pod -- sh
# Apply/delete config
kubectl apply -f deployment.yaml
kubectl delete pod nginx
# Port forward for local testing
kubectl port-forward pod/my-pod 3000:3000
kubectl port-forward svc/my-service 8080:80Bookmark the official Kubernetes documentation at kubernetes.io/docs — it's the most accurate reference. The kubectl explain command is also invaluable: kubectl explain deployment.spec.strategy gives you field-level docs without leaving the terminal.