Skip to content

mpwusr/CKA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CKA (Certified Kubernetes Administrator) Course

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.

CKA Exam Domains (v1.31)

Domain Weight
Cluster Architecture, Installation & Configuration 25%
Workloads & Scheduling 15%
Services & Networking 20%
Storage 10%
Troubleshooting 30%

Course Structure

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/

Prerequisites

  • A computer with at least 8 GB RAM (16 GB recommended)
  • Administrative/sudo access
  • Internet connection for downloading images
  • Basic Linux command-line familiarity

Local Kubernetes Installation

You need a local Kubernetes cluster to follow the labs. Choose either Kind (Kubernetes in Docker) or Minikube. Both are excellent for CKA preparation.

Option A: Kind (Kubernetes in Docker)

Kind runs Kubernetes clusters inside Docker containers. It's lightweight, fast to start, and supports multi-node clusters — ideal for CKA practice.

Prerequisites for Kind

Kind requires Docker (or Podman) to be installed first.


Kind on macOS

1. Install Docker Desktop

Download and install Docker Desktop from https://www.docker.com/products/docker-desktop/

Or install via Homebrew:

brew install --cask docker

Start 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/kind

3. 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/kubectl

4. 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
EOF

5. Verify

kubectl cluster-info --context kind-cka-lab
kubectl get nodes

Kind on Linux (Ubuntu/Debian)

1. 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 docker

2. 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/kind

3. 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/kubectl

4. 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
EOF

5. Verify

kubectl cluster-info --context kind-cka-lab
kubectl get nodes

Kind on Windows

1. 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.exe

Using 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/kind

3. 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.exe

WSL 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/kubectl

4. 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.yaml

kind-config.yaml:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker

5. Verify

kubectl cluster-info --context kind-cka-lab
kubectl get nodes

Option B: Minikube

Minikube runs a single-node Kubernetes cluster in a VM or container. It includes a dashboard and add-on system.

Minikube on macOS

1. Install a Hypervisor or Container Runtime

Docker Desktop (recommended — install as shown above) or HyperKit:

brew install hyperkit

2. 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/minikube

3. Install kubectl

brew install kubectl

4. 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 dashboard

5. Verify

kubectl get nodes
minikube status

Minikube on Linux (Ubuntu/Debian)

1. 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-amd64

3. 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/kubectl

4. 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 dashboard

5. Verify

kubectl get nodes
minikube status

Minikube on Windows

1. 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 variable

3. Install kubectl

choco install kubernetes-cli

4. 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 dashboard

5. Verify

kubectl get nodes
minikube status

Kind vs Minikube — Which Should I Use?

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.


Cluster Management Quick Reference

Kind

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 image

Minikube

minikube 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 node

kubectl Essentials

kubectl 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

Tips for the CKA Exam

  1. Practice with kubectl — a lot. The exam is hands-on; speed matters.
  2. 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
  3. Master kubectl explain — it's your in-exam documentation.
  4. Bookmark the official Kubernetes docs — they are allowed during the exam:
  5. 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"
  6. Time management — don't spend more than 5-7 minutes on any single question. Flag it and come back.

License

This course material is provided for educational purposes. Kubernetes and the CKA certification are trademarks of The Linux Foundation.

About

CKA (Certified Kubernetes Administrator) exam preparation course with slides, labs, and manifests

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors