- 48 Actual Exam Questions
- Compatible with all Devices
- Printable Format
- No Download Limits
- 90 Days Free Updates
Get All Certified Kubernetes Application Developer Exam Questions with Validated Answers
| Vendor: | Linux Foundation |
|---|---|
| Exam Code: | CKAD |
| Exam Name: | Certified Kubernetes Application Developer |
| Exam Questions: | 48 |
| Last Updated: | August 20, 2026 |
| Related Certifications: | Kubernetes Application Developer |
| Exam Tags: | Intermediate Kubernetes Application DeveloperKubernetes Developers |
Looking for a hassle-free way to pass the Linux Foundation Certified Kubernetes Application Developer exam? DumpsProvider provides the most reliable Dumps Questions and Answers, designed by Linux Foundation certified experts to help you succeed in record time. Available in both PDF and Online Practice Test formats, our study materials cover every major exam topic, making it possible for you to pass potentially within just one day!
DumpsProvider is a leading provider of high-quality exam dumps, trusted by professionals worldwide. Our Linux Foundation CKAD exam questions give you the knowledge and confidence needed to succeed on the first attempt.
Train with our Linux Foundation CKAD exam practice tests, which simulate the actual exam environment. This real-test experience helps you get familiar with the format and timing of the exam, ensuring you're 100% prepared for exam day.
Your success is our commitment! That's why DumpsProvider offers a 100% money-back guarantee. If you don’t pass the Linux Foundation CKAD exam, we’ll refund your payment within 24 hours no questions asked.
Don’t waste time with unreliable exam prep resources. Get started with DumpsProvider’s Linux Foundation CKAD exam dumps today and achieve your certification effortlessly!
SIMULATION
Context
You must connect to the correct host . Failure to do so may result in a zero score.
[candidate@base] $ ssh ckad00043
A Deployment needs specific RBAC permissions.
Task
First, find the RBAC permissions needed by the scraper Deployment running in the
cute-panda namespace .
it kubectl logs may help you to find the permissions it needs.
Next, create a new ServiceAccount named scraper in the namespace cute-panda.
ssh ckad00043
You have two deliverables here:
Figure out what RBAC permissions the scraper Deployment needs (the logs will usually show ''Forbidden'' with the missing verb/resource).
Create a ServiceAccount named scraper in namespace cute-panda (and in practice, you then bind the needed permissions to it and use it in the Deployment so it actually works).
Below is the exact CKAD-style workflow.
1) Find the missing RBAC permissions (use logs + events)
1.1 Identify the pods for the Deployment
kubectl -n cute-panda get deploy scraper
kubectl -n cute-panda get pods -l app=scraper 2>/dev/null || kubectl -n cute-panda get pods
Pick one pod name and check logs:
kubectl -n cute-panda logs deploy/scraper --tail=100
If the pod is crashlooping and logs are short:
POD=$(kubectl -n cute-panda get pods -o jsonpath='{.items[0].metadata.name}')
kubectl -n cute-panda logs '$POD' --previous --tail=200
1.2 Look specifically for ''Forbidden'' lines
Most apps print errors like:
... is forbidden: User 'system:serviceaccount:cute-panda:default' cannot list resource 'pods' in API group '' in the namespace 'cute-panda'
or cannot get resource 'configmaps'...
or cannot watch ...
If you don't see it in logs, check events:
kubectl -n cute-panda get events --sort-by=.lastTimestamp | tail -n 30
1.3 Extract verb/resource/apiGroup from the error
From a typical Kubernetes RBAC ''forbidden'' message, capture:
verb: get/list/watch/create/update/patch/delete
resource: pods, configmaps, secrets, deployments, etc.
apiGroup: '' (core), apps, batch, etc.
namespace: cute-panda (this is a namespaced permission if it's a Role)
You may have multiple ''cannot ...'' lines you need to allow all of them.
2) Create the ServiceAccount scraper (required by the task)
kubectl -n cute-panda create serviceaccount scraper
kubectl -n cute-panda get sa scraper
3) Create the RBAC objects to grant the needed permissions
The task says ''A Deployment needs specific RBAC permissions'' --- in CKAD, that usually means: Role + RoleBinding (namespaced) bound to your new ServiceAccount.
3.1 Create a Role (template you fill from the log output)
Create scraper-role.yaml:
cat <<'EOF' > scraper-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: scraper-role
namespace: cute-panda
rules:
# EXAMPLE ONLY: replace these rules with what your logs show
- apiGroups: ['']
resources: ['pods']
verbs: ['get','list','watch']
EOF
Apply it:
kubectl apply -f scraper-role.yaml
3.2 Bind the Role to the ServiceAccount
kubectl -n cute-panda create rolebinding scraper-rb \
--role=scraper-role \
--serviceaccount=cute-panda:scraper
Verify:
kubectl -n cute-panda get role scraper-role
kubectl -n cute-panda get rolebinding scraper-rb -o yaml
4) Update the Deployment to use the new ServiceAccount (so it actually works)
Check current SA (likely default):
kubectl -n cute-panda get deploy scraper -o jsonpath='{.spec.template.spec.serviceAccountName}{'\n'}'
Patch it to use scraper:
kubectl -n cute-panda patch deploy scraper -p '{'spec':{'template':{'spec':{'serviceAccountName':'scraper'}}}}'
Rollout:
kubectl -n cute-panda rollout status deploy scraper
Re-check logs to confirm RBAC errors are gone:
kubectl -n cute-panda logs deploy/scraper --tail=100
SIMULATION

Set Configuration Context:
[student@node-1] $ | kubectl
Config use-context k8s
Context
A user has reported an aopticauon is unteachable due to a failing livenessProbe .
Task
Perform the following tasks:
* Find the broken pod and store its name and namespace to /opt/KDOB00401/broken.txt in the format:

The output file has already been created
* Store the associated error events to a file /opt/KDOB00401/error.txt, The output file has already been created. You will need to use the -o wide output specifier with your command
* Fix the issue.

To find the broken pod and store its name and namespace to /opt/KDOB00401/broken.txt, you can use the kubectl get pods command and filter the output by the status of the pod.
kubectl get pods --field-selector=status.phase=Failed -o jsonpath='{.items[*].metadata.namespace}/{.items[*].metadata.name}' > /opt/KDOB00401/broken.txt
This command will list all pods with a status of Failed and output their names and namespaces in the format <namespace>/
To store the associated error events to a file /opt/KDOB00401/error.txt, you can use the kubectl describe command to retrieve detailed information about the pod, and the grep command to filter the output for error events.
kubectl describe pods
Replace
This command will output detailed information about the pod, including error events. The grep command filters the output for lines containing 'error' and also prints 5 lines before and after the match.
To fix the issue, you need to analyze the error events and find the root cause of the issue.
It could be that the application inside the pod is not running, the container image is not available, the pod has not enough resources, or the liveness probe configuration is incorrect.
Once you have identified the cause, you can take appropriate action, such as restarting the application, updating the container image, increasing the resources, or modifying the liveness probe configuration.
After fixing the issue, you can use the kubectl get pods command to check the status of the pod and ensure
SIMULATION

Task:
The pod for the Deployment named nosql in the craytisn namespace fails to start because its container runs out of resources.
Update the nosol Deployment so that the Pod:
1) Request 160M of memory for its Container
2) Limits the memory to half the maximum memory constraint set for the crayfah name space.

Solution:




SIMULATION
You are asked to prepare a canary deployment for testing a new application release.
You must connect to the correct host . Failure to do so may result in a zero score.
[candidate@base] $ ssh ckad00023
Modify the Deployments so that:
a maximum number of 10 Pods run in the moose namespace.
20% of the chipmunk-service 's traffic goes to the canary-chipmunk-deployment Pod
(s).

The Service is exposed on NodePort 30000. To test its load- balancing, run
[candidate@ckad00023] $ curl http://localhost:30000/
or open this URL in the remote desktop's browser.
ssh ckad00023
You need two outcomes in moose:
At most 10 Pods total (across both Deployments).
About 20% of chipmunk-service traffic goes to canary-chipmunk-deployment.
In Kubernetes Services, traffic distribution is (roughly) proportional to the number of ready endpoints behind the Service. So the standard canary trick is:
total endpoints = 10
canary endpoints = 2
current endpoints = 8
That gives ~20% to canary.
1) Inspect what exists
kubectl -n moose get deploy
kubectl -n moose get svc chipmunk-service -o wide
kubectl -n moose describe svc chipmunk-service
Get the Service selector (important):
kubectl -n moose get svc chipmunk-service -o jsonpath='{.spec.selector}{'\n'}'
Check current replicas:
kubectl -n moose get deploy current-chipmunk-deployment -o jsonpath='{.spec.replicas}{'\n'}'
kubectl -n moose get deploy canary-chipmunk-deployment -o jsonpath='{.spec.replicas}{'\n'}'
List pods + labels (to confirm both Deployments' pods match the Service selector):
kubectl -n moose get pods --show-labels
2) Ensure both Deployments are behind the Service
This is the key: the pods from BOTH deployments must match the Service selector.
If the Service selector is something like app=chipmunk, then both Deployments' pod templates must include app: chipmunk.
If one Deployment doesn't match, patch its pod template labels to match the selector.
2A) Example: selector is app=chipmunk
(Only do this if you see the Service selector contains app=chipmunk and one of the deployments is missing it.)
kubectl -n moose patch deploy current-chipmunk-deployment \
-p '{'spec':{'template':{'metadata':{'labels':{'app':'chipmunk'}}}}}'
kubectl -n moose patch deploy canary-chipmunk-deployment \
-p '{'spec':{'template':{'metadata':{'labels':{'app':'chipmunk'}}}}}'
Wait for rollouts if patches triggered new ReplicaSets:
kubectl -n moose rollout status deploy current-chipmunk-deployment
kubectl -n moose rollout status deploy canary-chipmunk-deployment
Verify endpoints now include pods from both deployments:
kubectl -n moose get endpoints chipmunk-service -o wide
3) Set replicas to enforce ''max 10 pods'' and ''20% canary''
Set:
current = 8
canary = 2
Total = 10.
kubectl -n moose scale deploy current-chipmunk-deployment --replicas=8
kubectl -n moose scale deploy canary-chipmunk-deployment --replicas=2
Wait until ready:
kubectl -n moose rollout status deploy current-chipmunk-deployment
kubectl -n moose rollout status deploy canary-chipmunk-deployment
Confirm total pods is 10 (or less) and all are Running/Ready:
kubectl -n moose get pods
kubectl -n moose get pods | tail -n +2 | wc -l
Confirm endpoints count matches 10:
kubectl -n moose get endpoints chipmunk-service -o jsonpath='{.subsets[*].addresses[*].ip}' | wc -w
4) Test load balancing via NodePort 30000
Run several times:
for i in $(seq 1 30); do curl -s http://localhost:30000/; echo; done
You should see canary responses appear roughly ~20% of the time (not exact every run).
If you want a clearer signal, check which pods are endpoints and ensure 2 belong to canary and 8 to current:
kubectl -n moose get pods -l app=chipmunk -o wide
kubectl -n moose get endpoints chipmunk-service -o wide
SIMULATION

Task:
Modify the existing Deployment named broker-deployment running in namespace quetzal so that its containers.
1) Run with user ID 30000 and
2) Privilege escalation is forbidden
The broker-deployment is manifest file can be found at:

Solution:



Security & Privacy
Satisfied Customers
Committed Service
Money Back Guranteed