Free Linux Foundation CKAD Exam Actual Questions & Explanations

Last updated on: Jul 31, 2026
Author: Julia King (Linux Foundation Certified Training Developer)

The Certified Kubernetes Application Developer (CKAD) exam, offered by the Linux Foundation, validates your ability to design, build, and deploy applications on Kubernetes. This certification is ideal for developers who work with containerized applications and need to demonstrate practical expertise in the Kubernetes ecosystem. This guide provides a structured overview of the exam domains, question formats, and a clear preparation roadmap to help you succeed on test day.

CKAD Exam Syllabus & Core Topics

Use this topic map to guide your study for Linux Foundation CKAD (Certified Kubernetes Application Developer) within the Kubernetes Application Developer path.

  • Application Design and Build: Define containerized applications, write Dockerfiles, and push images to registries. Understand how to structure multi-container applications and leverage Kubernetes manifests for deployment.
  • Application Deployment: Deploy applications using Deployments, StatefulSets, and DaemonSets. Configure rolling updates, manage replicas, and ensure high availability in production environments.
  • Application Environment, Configuration and Security: Use ConfigMaps and Secrets to manage application configuration. Apply security policies, set resource limits, and enforce RBAC rules to protect cluster resources.
  • Services and Networking: Expose applications through Services (ClusterIP, NodePort, LoadBalancer). Configure ingress controllers, manage network policies, and enable inter-pod communication.
  • Application Observability and Maintenance: Monitor application health using logs, metrics, and events. Troubleshoot failing pods, debug connectivity issues, and interpret cluster status to maintain reliability.

Question Formats & What They Test

The CKAD exam combines multiple question types to evaluate both conceptual knowledge and hands-on problem-solving skills. Questions progress in difficulty and emphasize real-world scenarios you'll encounter in production environments.

  • Multiple Choice: Test your understanding of Kubernetes concepts, API object properties, and best practices. These questions verify foundational knowledge of core features and terminology.
  • Scenario-Based Items: Present real-world situations where you must analyze application requirements and select the best deployment strategy, networking configuration, or troubleshooting approach.
  • Hands-On Simulation: Require you to interact with a live Kubernetes cluster, create resources, modify configurations, and verify that applications behave as expected. These tasks simulate actual developer workflows.

Preparation Guidance

Effective preparation requires mapping exam domains to a structured study schedule and reinforcing concepts through practical exercises. Allocate time proportionally to each topic, prioritize hands-on labs, and use practice tests to identify gaps before exam day.

  • Organize your study into weekly blocks aligned to Application Design and Build, Application Deployment, Application Environment Configuration and Security, Services and Networking, and Application Observability and Maintenance. Track completion and revisit weaker areas.
  • Work through practice question sets and carefully review explanations for both correct and incorrect answers. This habit builds deeper understanding and prevents repeated mistakes.
  • Connect concepts across domains: for example, understand how ConfigMaps relate to deployment strategies, or how network policies affect service communication.
  • Complete a full-length, timed practice test one week before your exam to assess pacing, identify remaining weak spots, and reduce test anxiety.

Explore other Linux Foundation certifications: view all Linux Foundation exams.

Get the PDF & Practice Test

Strengthen your preparation with up-to-date resources from validexamdumps.com. These materials align to CKAD and cover practical scenarios with clear explanations.

  • Q&A PDF with explanations: Topic-mapped questions that clarify why correct options are right and others aren't.
  • Practice Test: Realistic items, timed and untimed modes, progress tracking, and detailed review of every question.
  • Focused coverage: Aligned to Application Design and Build, Application Deployment, Application Environment Configuration and Security, Services and Networking, and Application Observability and Maintenance so you study what matters most.
  • Regular reviews: Content refreshes that reflect syllabus and product changes.

Visit the exam page to download the PDF, Online Practice Test, or get a Bundle Discount offer for both formats: Certified Kubernetes Application Developer.

Frequently Asked Questions

What is the primary focus of the CKAD exam?

The CKAD exam focuses on practical, hands-on skills for developing and deploying applications on Kubernetes. Rather than testing theoretical knowledge alone, it emphasizes your ability to build container images, configure deployments, manage networking, and troubleshoot issues in a live cluster environment.

How do the five exam domains connect in a real project workflow?

In practice, you start with Application Design and Build by creating and containerizing your code. Next, you use Application Deployment to release it on Kubernetes. Application Environment, Configuration and Security ensures your app has the right settings and access controls. Services and Networking makes your app reachable to users and other services. Finally, Application Observability and Maintenance keeps your app healthy and running smoothly in production.

How much hands-on Kubernetes experience should I have before taking the exam?

You should be comfortable with basic kubectl commands, writing YAML manifests, and deploying simple applications to a Kubernetes cluster. Ideally, complete at least 2-3 months of hands-on practice with labs that cover all five exam domains. Focus on labs that simulate real scenarios: deploying multi-tier applications, configuring networking policies, and troubleshooting pod failures.

What are the most common mistakes candidates make on the CKAD exam?

Common mistakes include misunderstanding the difference between Services and Ingress, overlooking resource requests and limits, writing YAML with incorrect indentation or field names, and failing to verify that deployed applications actually work. Many candidates also rush through scenario-based questions without fully reading requirements. Slow down, read each question twice, and always test your configurations before submitting.

What is an effective review strategy for the final week before the exam?

In your final week, focus on weak domains identified in practice tests rather than re-reading notes. Complete at least two full-length practice tests under exam conditions to build confidence and pacing. Review your mistakes carefully, then spend 2-3 hours doing targeted hands-on labs in those specific areas. On the day before the exam, do a light review of key commands and concepts, then rest well.

Question No. 1

SIMULATION

Context

Your application's namespace requires a specific service account to be used.

Task

Update the app-a deployment in the production namespace to run as the restrictedservice service account. The service account has already been created.

Show Answer Hide Answer
Correct Answer: A

Solution:


Question No. 2

SIMULATION

Context

An existing web application must be exposed externally.

You must connect to the correct host . Failure to do so may result in a zero score.

[candidate@base] $ ssh ckad00025

An application externally using the URL external.sterling-bengal.local . Any requests starting with / must be routed to the application web-app.

To test the web application's external reachability, run

[candidate@ckad00025] $ curl http://external.sterling-bengal.local/

or open this URL in the remote desktop's browser.

Show Answer Hide Answer
Correct Answer: A

ssh ckad00025

You need to expose the existing app ''web-app'' externally at:

Host: external.sterling-bengal.local

Path: / (and anything starting with /) route to web-app

In CKAD labs, this is almost always done with an Ingress pointing to the Service web-app.

1) Find where web-app Service lives (namespace + port)

kubectl get svc -A | grep -w web-app

You'll get something like:

<NAMESPACE> web-app ClusterIP ... <PORT>/TCP

Set the namespace:

NS=<NAMESPACE>

Check the service port(s):

kubectl -n $NS get svc web-app -o yaml

Note the service port number (commonly 80).

Also verify it has endpoints (so it actually routes to pods):

kubectl -n $NS get endpoints web-app -o wide

If endpoints are empty, the Service selector doesn't match pods --- tell me and I'll give the exact fix. But usually it's fine.

2) Create the Ingress to route / to web-app

Create a manifest (use the service port you saw; I'll assume 80 below):

cat <<'EOF' > web-app-ingress.yaml

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

name: web-app-ingress

spec:

rules:

- host: external.sterling-bengal.local

http:

paths:

- path: /

pathType: Prefix

backend:

service:

name: web-app

port:

number: 80

EOF

Apply it:

kubectl -n $NS apply -f web-app-ingress.yaml

Verify:

kubectl -n $NS get ingress web-app-ingress

kubectl -n $NS describe ingress web-app-ingress

If your Service port is not 80, change number: 80 to the correct value and re-apply.

3) Test external reachability (as instructed)

Run exactly:

curl -i http://external.sterling-bengal.local/

If curl still fails (quick checks)

A) Is there an ingress controller running?

kubectl get pods -A | egrep -i 'ingress|nginx'

kubectl get svc -A | egrep -i 'ingress|nginx'

B) Does Ingress show an address?

kubectl -n $NS get ingress web-app-ingress -o wide

C) Do we have endpoints?

kubectl -n $NS get endpoints web-app -o wide


Question No. 3

SIMULATION

Set Configuration Context:

[student@node-1] $ | kubectl

Config use-context k8s

Context

A web application requires a specific version of redis to be used as a cache.

Task

Create a pod with the following characteristics, and leave it running when complete:

* The pod must run in the web namespace.

The namespace has already been created

* The name of the pod should be cache

* Use the Ifccncf/redis image with the 3.2 tag

* Expose port 6379

Show Answer Hide Answer
Correct Answer: A

Solution:


Question No. 4

SIMULATION

Context

You are asked to deploy an application developed for an older version of Kubernetes on a cluster running a recent version of Kubernetes .

You must connect to the correct host . Failure to do so may result in a zero score.

[candidate@base] $ ssh ckad00026

Task

Fix any API -deprecation issues in the manitest file

/home/candidate/credible-mite/web.yaml

so that the application can be deployed on cluster ckad00026.

The application was developed for Kubernetes v1.15.

The cluster ckad00026 runs Kubernetes 1.29+.

Deploy the application specified in the updated manifest file

/home/candidate/credible-mite/web.yaml in namespace garfish .

Show Answer Hide Answer
Correct Answer: A

ssh ckad00026

Your job is to edit /home/candidate/credible-mite/web.yaml so it uses APIs supported on Kubernetes 1.29+, then deploy it into namespace garfish.

Because I can't see your file from here, the most reliable exam approach is:

run a server-side dry-run to reveal the exact deprecated/removed APIs and schema errors

edit the manifest to the modern API versions/fields

re-run dry-run until it passes

apply for real and verify rollout

1) Go to the manifest and run a server-side dry-run

cd /home/candidate/credible-mite

ls -l

sed -n '1,200p' web.yaml

Make sure the namespace exists:

kubectl get ns garfish || kubectl create ns garfish

Now run a server-side dry-run (this catches removed APIs on the cluster):

kubectl apply -n garfish -f web.yaml --dry-run=server

Whatever errors you get here tell you exactly what to fix.

2) Fix the common v1.15 v1.29 API deprecations

Edit the file:

vi web.yaml

Below are the most common objects from older manifests and how to update them for 1.29+.

A) Deployments / DaemonSets / StatefulSets

Old (v1.15 often used):

extensions/v1beta1 or apps/v1beta1 or apps/v1beta2

New:

apiVersion: apps/v1

Also in apps/v1, .spec.selector is required and must match the pod template labels.

Example conversion:

apiVersion: apps/v1

kind: Deployment

metadata:

name: web

spec:

replicas: 2

selector:

matchLabels:

app: web

template:

metadata:

labels:

app: web

spec:

containers:

- name: web

image: nginx

Key rule:

spec.selector.matchLabels must exactly match spec.template.metadata.labels (at least for the keys you select on).

B) Ingress

Old:

apiVersion: extensions/v1beta1 (or networking.k8s.io/v1beta1)

New:

apiVersion: networking.k8s.io/v1

Required changes:

spec.rules.http.paths[].pathType is required (usually Prefix)

backend format changes from serviceName/servicePort to service.name/service.port.number (or .name for named ports)

Old backend:

backend:

serviceName: web

servicePort: 80

New backend:

backend:

service:

name: web

port:

number: 80

Full path example:

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

name: web

spec:

rules:

- host: example.local

http:

paths:

- path: /

pathType: Prefix

backend:

service:

name: web

port:

number: 80

C) CronJob

Old:

apiVersion: batch/v1beta1

New:

apiVersion: batch/v1

Most fields stay the same; just update apiVersion.

D) PodDisruptionBudget

Old:

policy/v1beta1

New:

policy/v1

spec.selector/minAvailable/maxUnavailable remain, but apiVersion changes.

E) RBAC

Usually already:

rbac.authorization.k8s.io/v1 (this is fine)

F) Removed APIs you must delete/replace

If you see these in a v1.15-era manifest, they are removed in modern clusters:

PodSecurityPolicy (policy/v1beta1) is removed. You cannot deploy it on 1.29+. Remove it from the manifest (or replace with whatever your environment uses, but for CKAD tasks you usually delete PSP sections from the file).

Some old admission/alpha resources also removed.

If dry-run complains ''no matches for kind ... in version ...'', that's your cue.

3) Re-run dry-run until it succeeds

After you edit:

kubectl apply -n garfish -f web.yaml --dry-run=server

Keep iterating until there are no errors.

4) Deploy for real

kubectl apply -n garfish -f /home/candidate/credible-mite/web.yaml

5) Verify everything in namespace garfish

List what was created:

kubectl -n garfish get all

kubectl -n garfish get ingress 2>/dev/null || true

If there is a Deployment, verify rollout:

kubectl -n garfish get deploy

kubectl -n garfish rollout status deploy --all

Check pods/events if something fails:

kubectl -n garfish get pods -o wide

kubectl -n garfish describe pod

kubectl -n garfish get events --sort-by=.lastTimestamp | tail -n 30


Question No. 5

SIMULATION

Context

Anytime a team needs to run a container on Kubernetes they will need to define a pod within which to run the container.

Task

Please complete the following:

* Create a YAML formatted pod manifest

/opt/KDPD00101/podl.yml to create a pod named app1 that runs a container named app1cont using image Ifccncf/arg-output

with these command line arguments: -lines 56 -F

* Create the pod with the kubect1 command using the YAML file created in the previous step

* When the pod is running display summary data about the pod in JSON format using the kubect1 command and redirect the output to a file named /opt/KDPD00101/out1.json

* All of the files you need to work with have been created, empty, for your convenience

Show Answer Hide Answer
Correct Answer: A

Solution: