CKAD Exam Format and Scope
CKAD is two hours of practical tasks on a cluster somebody else built. That single fact removes more material than any syllabus does: no kubeadm, no etcd, no node joins, no control-plane repair. This guide draws the boundary off a real cluster - what is namespaced and therefore fair game, what is cluster-scoped and therefore somebody else's job - so you stop revising the wrong half.
Orientation Guide 1 of 44 Beginner
- Kubernetes1.36.4
- Runtimecontainerd 2.2.6
- CNICalico v3.32.1
- TimeAbout 12 min
- Reviewed23 August 2026
Written against the versions above. Counts come from this cluster, not from the API reference. `api-resources` reports what the API server currently serves, including every CRD installed on it, so the numbers move with the cluster. The shape of the answer does not.
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| CKA1001 | 192.168.0.175 | Ubuntu 26.04 LTS | Control Plane Node | 2 Core | 4 GB | 50 GB |
| CKA1001-NODE01 | 192.168.0.176 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
| CKA1001-NODE02 | 192.168.0.177 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
| CKA1001-NODE03 | 192.168.0.178 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
Before you start
- A cluster and kubectl. Nothing is created or changed anywhere in this guide.
- No prior Kubernetes knowledge is assumed beyond knowing that
kubectltalks to a cluster.
-
The line that decides what you can be asked
Kubernetes objects are either namespaced or cluster-scoped, and CKAD lives almost entirely on one side of that line. Ask the cluster:
8086Eighty namespaced kinds, eighty-six cluster-scoped. That second number is misleading on this cluster and it is worth saying so: Calico registers dozens of its own cluster-scoped CRDs, and they are counted here. A bare kubeadm cluster has far fewer.
Look at what is on the cluster-scoped list -
nodes,persistentvolumes,clusterroles,storageclasses,customresourcedefinitions,certificatesigningrequests. Those are CKA and CKS subject matter. A CKAD task will hand you a namespace and everything it asks for will live inside it.bash Example session kubectl versionClient Version: v1.36.4Kustomize Version: v5.8.1Server Version: v1.36.4kubectl api-resources --namespaced=true --no-headers | wc -l80kubectl api-resources --namespaced=false --no-headers | wc -l86kubectl api-resources --namespaced=false --no-headers | awk '{print $1}' | tr '\n' ' 'componentstatuses namespaces nodes persistentvolumes mutatingadmissionpolicies mutatingadmissionpolicybindings mutatingwebhookconfigurations validatingadmissionpolicies validatingadmissionpolicybindings validatingwebhookconfigurations customresourcedefinitions apiservices clusteranalysistemplates selfsubjectreviews tokenreviews selfsubjectaccessreviews selfsubjectrulesreviews subjectaccessreviews certificatesigningrequests bgpconfigurations bgpfilters bgppeers blockaffinities caliconodestatuses clusterinformations felixconfigurations globalnetworkpolicies globalnetworksets hostendpoints ipamblocks ipamconfigs ipamhandles ippools ipreservations kubecontrollersconfigurations stagedglobalnetworkpolicies tiers flowschemas prioritylevelconfigurations gatewayclasses volumegroupsnapshotclasses volumegroupsnapshotcontents nodes ingressclasses ipaddresses servicecidrs runtimeclasses apiservers gatewayapis goldmanes imagesets installations istios managementclusterconnections tigerastatuses whiskers clusternetworkpolicies bgpconfigurations bgpfilters bgppeers blockaffinities caliconodestatuses clusterinformations felixconfigurations globalnetworkpolicies globalnetworksets hostendpoints ipamconfigurations ippools ipreservations kubecontrollersconfigurations profiles stagedglobalnetworkpolicies tiers clusterrolebindings clusterroles deviceclasses resourceslices priorityclasses volumesnapshotclasses volumesnapshotcontents csidrivers csinodes storageclasses volumeattachments volumeattributesclassesExpected resultTwo counts, and a list dominated by things a developer never edits.
Success conditionYou can name the half of Kubernetes CKAD does not test.
-
The objects that actually come up
Filter the namespaced list down to what the CKAD curriculum names and you get a list short enough to hold in your head:
configmaps limitranges persistentvolumeclaims pods resourcequotas secrets serviceaccounts services daemonsets deployments replicasets statefulsets horizontalpodautoscalers cronjobs jobs networkpolicies pods ingresses networkpolicies networkpoliciesThat is the whole exam. Seventeen or so kinds, and you will spend most of your time on six of them.
Notice
podsappears twice andnetworkpoliciesthree times. That is not a mistake in the filter - the metrics API serves apodsresource of its own, and Calico serves two morenetworkpolicies. This is exactly why an ambiguous short name can resolve to something you did not mean, and whykubectl get networkpolicies.networking.k8s.ioexists.bash Example session kubectl api-resources --namespaced=true --no-headers | awk '{print $1}' | grep -E '^(pods|deployments|replicasets|statefulsets|daemonsets|jobs|cronjobs|services|ingresses|configmaps|secrets|persistentvolumeclaims|serviceaccounts|networkpolicies|resourcequotas|limitranges|horizontalpodautoscalers)$' | tr '\n' ' 'configmaps limitranges persistentvolumeclaims pods resourcequotas secrets serviceaccounts services daemonsets deployments replicasets statefulsets horizontalpodautoscalers cronjobs jobs networkpolicies pods ingresses networkpolicies networkpolicieskubectl api-versions | wc -l40Expected resultA short list of kinds, with visible duplicates.
Success conditionYou have the object list the rest of this path works through.
-
What is on the cluster that you will never be asked to fix
The cluster has four nodes and a control plane running as static Pods:
etcd-cka1001 kube-apiserver-cka1001 kube-controller-manager-cka1001 kube-scheduler-cka1001On CKA, those four are the exam. On CKAD they are furniture. You are never asked to restore etcd, renew an API server certificate, join a node or debug a kubelet.
What this buys you is focus. The two hours are spent on: write a manifest, fix a manifest, expose something, configure something, and work out why a Pod is not running. Everything in this path is one of those five.
bash Example session kubectl get nodes --no-headers | wc -l4kubectl -n kube-system get pods -l tier=control-plane -o 'custom-columns=POD:.metadata.name' --no-headers | tr '\n' ' 'etcd-cka1001 kube-apiserver-cka1001 kube-controller-manager-cka1001 kube-scheduler-cka1001Expected resultFour nodes, four control-plane components.
Success conditionYou know what to skip when a study guide starts talking about etcd.
Troubleshooting
kubectl get networkpoliciesreturns something unexpected.Why: More than one API group serves that resource name - here, Calico's as well as Kubernetes'.
Fix:Qualify it:
kubectl get networkpolicies.networking.k8s.io.kubectl api-resources | grep <name>shows every group serving a name.A study resource spends chapters on etcd and kubeadm.
Why: It is CKA material.
Fix:Check whether the object is namespaced. If it is cluster-scoped, it is almost certainly not CKAD.