A comprehensive, hands-on course to prepare for the CNCF Certified Kubernetes Administrator exam. Includes slide decks, hands-on labs, and manifest files organized by the official CKA exam domains.
| Domain | Weight |
|---|---|
| Cluster Architecture, Installation & Configuration | 25% |
| Workloads & Scheduling | 15% |
| Services & Networking | 20% |
| Storage | 10% |
| Troubleshooting | 30% |
CKA/
├── README.md
├── slides/ # PPTX slide decks per module
│ ├── 01-cluster-architecture.pptx
│ ├── 02-workloads-scheduling.pptx
│ ├── 03-services-networking.pptx
│ ├── 04-storage.pptx
│ └── 05-troubleshooting.pptx
├── labs/ # DOCX hands-on lab guides
│ ├── lab-01-cluster-setup.docx
│ ├── lab-02-workloads.docx
│ ├── lab-03-networking.docx
│ ├── lab-04-storage.docx
│ └── lab-05-troubleshooting.docx
└── manifests/ # Kubernetes YAML files for labs
├── 01-cluster/
├── 02-workloads/
├── 03-networking/
├── 04-storage/
└── 05-troubleshooting/
- A computer with at least 8 GB RAM (16 GB recommended)
- Administrative/sudo access
- Internet connection for downloading images
- Basic Linux command-line familiarity
You need a local Kubernetes cluster to follow the labs. Choose either Kind (Kubernetes in Docker) or Minikube. Both are excellent for CKA preparation.
Kind runs Kubernetes clusters inside Docker containers. It's lightweight, fast to start, and supports multi-node clusters — ideal for CKA practice.
Kind requires Docker (or Podman) to be installed first.
1. Install Docker Desktop
Download and install Docker Desktop from https://www.docker.com/products/docker-desktop/
Or install via Homebrew:
brew install --cask dockerStart Docker Desktop from Applications and wait for the Docker engine to be running.
2. Install Kind
# Using Homebrew (recommended)
brew install kind
# Or download the binary directly
# For Apple Silicon (M1/M2/M3/M4)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.25.0/kind-darwin-arm64
# For Intel Mac
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.25.0/kind-darwin-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind3. Install kubectl
# Using Homebrew
brew install kubectl
# Or download directly
# Apple Silicon
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
# Intel
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl4. Create a Cluster
# Single-node cluster
kind create cluster --name cka-lab
# Multi-node cluster (recommended for CKA practice)
cat <<EOF | kind create cluster --name cka-lab --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker
EOF5. Verify
kubectl cluster-info --context kind-cka-lab
kubectl get nodes1. Install Docker Engine
# Remove old versions
sudo apt-get remove docker docker-engine docker.io containerd runc
# Install prerequisites
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
# Add Docker's official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Add your user to the docker group (log out and back in after this)
sudo usermod -aG docker $USER
newgrp docker2. Install Kind
# For AMD64
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.25.0/kind-linux-amd64
# For ARM64
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.25.0/kind-linux-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind3. Install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl4. Create a Cluster
# Single-node cluster
kind create cluster --name cka-lab
# Multi-node cluster (recommended for CKA practice)
cat <<EOF | kind create cluster --name cka-lab --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker
EOF5. Verify
kubectl cluster-info --context kind-cka-lab
kubectl get nodes1. Install Docker Desktop
Download and install Docker Desktop for Windows from https://www.docker.com/products/docker-desktop/
Ensure WSL 2 backend is enabled (Docker Desktop Settings > General > Use the WSL 2 based engine).
2. Install Kind
Using PowerShell (as Administrator):
# Using Chocolatey
choco install kind
# Or download the binary directly
curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.25.0/kind-windows-amd64
Move-Item .\kind-windows-amd64.exe C:\Windows\kind.exeUsing WSL 2 (recommended for CKA practice — gives you a Linux environment):
# Inside your WSL 2 Ubuntu terminal
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.25.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind3. Install kubectl
PowerShell:
# Using Chocolatey
choco install kubernetes-cli
# Or download directly
curl.exe -LO "https://dl.k8s.io/release/v1.31.0/bin/windows/amd64/kubectl.exe"
Move-Item .\kubectl.exe C:\Windows\kubectl.exeWSL 2:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl4. Create a Cluster
# PowerShell — single-node
kind create cluster --name cka-lab
# PowerShell — multi-node (save the config to a file first)
# Create kind-config.yaml with the multi-node config, then:
kind create cluster --name cka-lab --config kind-config.yamlkind-config.yaml:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker5. Verify
kubectl cluster-info --context kind-cka-lab
kubectl get nodesMinikube runs a single-node Kubernetes cluster in a VM or container. It includes a dashboard and add-on system.
1. Install a Hypervisor or Container Runtime
Docker Desktop (recommended — install as shown above) or HyperKit:
brew install hyperkit2. Install Minikube
# Using Homebrew
brew install minikube
# Or download directly
# Apple Silicon
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-arm64
sudo install minikube-darwin-arm64 /usr/local/bin/minikube
# Intel
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube3. Install kubectl
brew install kubectl4. Start the Cluster
# Using Docker driver (recommended)
minikube start --driver=docker --cpus=4 --memory=8192 --kubernetes-version=v1.31.0
# Enable useful add-ons
minikube addons enable metrics-server
minikube addons enable ingress
minikube addons enable dashboard5. Verify
kubectl get nodes
minikube status1. Install Docker
Follow the Docker installation steps from the Kind section above.
2. Install Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
rm minikube-linux-amd643. Install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl4. Start the Cluster
minikube start --driver=docker --cpus=4 --memory=8192 --kubernetes-version=v1.31.0
# Enable useful add-ons
minikube addons enable metrics-server
minikube addons enable ingress
minikube addons enable dashboard5. Verify
kubectl get nodes
minikube status1. Install a Hypervisor or Container Runtime
Install Docker Desktop for Windows (recommended) or Hyper-V (built into Windows Pro/Enterprise).
2. Install Minikube
PowerShell (as Administrator):
# Using Chocolatey
choco install minikube
# Or download directly
New-Item -Path 'C:\minikube' -ItemType Directory -Force
Invoke-WebRequest -OutFile 'C:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing
# Add C:\minikube to your PATH environment variable3. Install kubectl
choco install kubernetes-cli4. Start the Cluster
# Using Docker driver
minikube start --driver=docker --cpus=4 --memory=8192 --kubernetes-version=v1.31.0
# Using Hyper-V driver (Windows Pro/Enterprise)
minikube start --driver=hyperv --cpus=4 --memory=8192 --kubernetes-version=v1.31.0
# Enable useful add-ons
minikube addons enable metrics-server
minikube addons enable ingress
minikube addons enable dashboard5. Verify
kubectl get nodes
minikube status| Feature | Kind | Minikube |
|---|---|---|
| Multi-node clusters | Yes (native) | Limited (experimental) |
| Speed | Very fast startup | Moderate startup |
| Resource usage | Lightweight | Heavier (VM-based option) |
| CKA multi-node practice | Excellent | Limited |
| Built-in dashboard | No | Yes |
| Add-on ecosystem | Minimal | Rich |
| Container runtime | containerd | Docker, containerd, CRI-O |
Recommendation for CKA: Use Kind for its multi-node cluster support — many CKA exam tasks involve working with multiple nodes. Use Minikube if you prefer a simpler setup with built-in add-ons.
kind create cluster --name cka-lab # Create cluster
kind get clusters # List clusters
kind delete cluster --name cka-lab # Delete cluster
kind load docker-image myapp:latest --name cka-lab # Load local imageminikube start # Start cluster
minikube stop # Stop cluster
minikube delete # Delete cluster
minikube dashboard # Open dashboard
minikube addons list # List add-ons
minikube ssh # SSH into the nodekubectl config get-contexts # List contexts
kubectl config use-context <context-name> # Switch context
kubectl get nodes -o wide # Node details
kubectl describe node <node-name> # Full node info
kubectl api-resources # List all resource types
kubectl explain pod.spec.containers # Built-in docs- Practice with
kubectl— a lot. The exam is hands-on; speed matters. - Learn imperative commands for fast resource creation:
kubectl run nginx --image=nginx kubectl create deployment web --image=nginx --replicas=3 kubectl expose deployment web --port=80 --type=NodePort
- Master
kubectl explain— it's your in-exam documentation. - Bookmark the official Kubernetes docs — they are allowed during the exam:
- Set up aliases and auto-completion at the start of the exam:
alias k=kubectl complete -o default -F __start_kubectl k export do="--dry-run=client -o yaml"
- Time management — don't spend more than 5-7 minutes on any single question. Flag it and come back.
This course material is provided for educational purposes. Kubernetes and the CKA certification are trademarks of The Linux Foundation.