Loading repository data…
Loading repository data…
techiescamp / repository
This comprehensive CKA learning path repo equips aspiring Kubernetes administrators with all the knowledge and resources to ace the CKA exam on the first try. Includes in-depth explanations, hands-on labs, and valuable study materials. Pass the CKA and unlock your Kubernetes potential today!
This is a detailed study guide with tips and practical examples to ace the Certified Kubernetes Administrator exam.
If you are planning to use this repo for reference, please hit the star. Thanks!
To save flat 30% on CKA exam registration, use the following coupon code.
[!IMPORTANT] Coupon: Use code DCUBE30 at kube.promo/cka
Use code DCUBE30 to save upto 38% on the following bundles:
Source: CNCF CKA Curriculum v1.35 | Kubernetes version: v1.35 | Updated: 2026
| # | Domain | Weight | Study Notes | Key Topics |
|---|---|---|---|---|
| 1 | Cluster Architecture, Installation & Configuration | 25% | Notes | RBAC, kubeadm, Helm, Kustomize, CRDs, Operators |
| 2 | Workloads & Scheduling | 15% | Notes | Deployments, ConfigMaps, Secrets, HPA, affinity |
| 3 | Storage | 10% | Notes | StorageClasses, PV, PVC, dynamic provisioning |
| 4 | Services & Networking | 20% | Notes | NetworkPolicies, Gateway API, Ingress, CoreDNS |
| 5 | Troubleshooting | 30% | Notes | Pod failures, node issues, control plane, networking |
[!TIP] Troubleshooting (30%) is the highest-weighted domain. Invest at least 1/3 of your study time there.
25%15%10%| # | Topic |
|---|---|
| 1 | 🏷️ Implement storage classes and dynamic volume provisioning |
| 2 | 🔧 Configure volume types, access modes and reclaim policies |
| 3 | 📀 Manage persistent volumes and persistent volume claims |
20%30% Highest Weight[!IMPORTANT] Troubleshooting is worth 30% of your score 👉 The single largest domain. Dedicate at least one-third of your study time here.
Following are the subtopics under Cluster Architecture, Installation & Configuration
Setup Virtual Machines : Ensure that each virtual machine (VM) meets the minimum system requirements for setting up a Kubernetes cluster.
Kubeadm Cluster Prerequisites : Ensure that all VMs can communicate with each other, as Kubernetes requires all nodes to have unrestricted communication for pod-to-pod networking.
Provision underlying infrastructure to deploy a Kubernetes cluster : Tools like VirtualBox, VMware, or KVM can be used to set up virtual machines locally and for cloud environments, consider providers like AWS, GCP, or Azure for flexibility and scalability.
Kubeadm Cluster Bootstrap : Initialize a Kubernetes cluster using a multi-part kubeadm configuration file, customizing the Kubelet, Kube Proxy, and Scheduler settings.
# Edit the config file (Sample Configuration)
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: "172.30.1.2"
bindPort: 6443
nodeRegistration:
name: "controlplane"
criSocket: "unix:///var/run/containerd/containerd.sock"
imagePullPolicy: IfNotPresent
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: "1.35.0"
controlPlaneEndpoint: "172.30.1.2:6443"
networking:
podSubnet: "10.244.0.0/16"
serviceSubnet: "10.96.0.0/12"
dnsDomain: "cluster.local"
imageRepository: "registry.k8s.io"
etcd:
local:
dataDir: "/var/lib/etcd"
controllerManager:
extraArgs:
- name: "node-cidr-mask-size"
value: "24"
scheduler:
extraArgs:
- name: "leader-elect"
value: "true"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: "systemd"
syncFrequency: "1m"
failSwapOn: false
rotateCertificates: true
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
clusterCIDR: "10.244.0.0/16"
conntrack:
maxPerCore: 32768
min: 131072
tcpCloseWaitTimeout: "1h"
tcpEstablishedTimeout: "24h"
# Initialize the cluster using the config file
sudo kubeadm init --config=[CONFIG_FILE] --ignore-preflight-errors=NumCPU
# Configure the Kubectl access [Command will be shown in the output]
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Install the CNI plugin
kubectl apply -f [CNI_URL]
# Join worker nodes [Command will be shown in the output]
ssh [WORKER_NODE]
kubeadm join ....
Perform Cluster Version upgrade Using Kubeadm : Managing the lifecycle involves upgrading clusters, managing control plane nodes, and ensuring consistency across versions.
Container Runtime Interface (CRI) : Kubernetes uses the CRI to communicate with container runtimes.
# Check container runtime
crictl info
# List all containers
crictl ps
# View specific container details
crictl inspect <container-id>
# View container logs
crictl logs <container-id>
Network Plugin : Kubernetes uses network plugins (CNI) to manage pod networking, get a good understanding of popular plugins like Calico, Flannel, and Weave Net, and understand the role of CNIs in providing network connectivity, security policies, and IPAM.
# List installed CNI plugins
ls /etc/cni/net.d/
# Install the Tigera Operator
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.31.3/manifests/operator-crds.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.31.3/manifests/tigera-operator.yaml
# Download the Calico Custom Resources
curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.31.3/manifests/custom-resources.yaml
# Get the cluster Pod CIDR information
kubectl -n kube-system get pod -l component=kube-controller-manager -o yaml | grep -i cluster-cidr
# Modify the Custom Resource manifest with the cluster CIDR
vi custom-resource.yaml
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
calicoNetwork:
ipPools:
- name: default-ipv4-ippool
blockSize: 26
cidr: 10.244.0.0/16
encapsulation: VXLANCrossSubnet
nat