The three previous lessons covered what each certification includes. This one covers how you pass it. It is the technique lesson, and it is common to the CKA, the CKAD and the CKS, because all three share the same format: a browser-based terminal, a remote proctor watching, about fifteen tasks and a clock that keeps running.
There are people who know Kubernetes inside out and still fail. The causes are almost always the same and none of them is technical: not switching context, typing YAML by hand, getting stuck for fifteen minutes on a four-point task, not verifying what you did, or turning up with a webcam that does not work. All of that can be prevented, and preventing it is precisely what this lesson is for.
Notice. The proctoring environment requirements, the retake policy, the length of validity and the identification procedure change over time. What follows is indicative. Always check the Candidate Handbook and the current conditions on the Linux Foundation / CNCF website before booking your exam.
Contents
- Before the exam: environment, identification and booking a date
- The first 60 seconds: preparing the terminal
- Making effective use of the allowed documentation
- Managing time during the exam
- The mistakes that cost the most points
- The habit of verifying every task
- Mental and physical preparation
- If something goes wrong during the exam
- After the exam: result, review, renewal and how to prove it
- Before the exam: environment, identification and booking a date
1.1 Remote proctoring environment requirements
The exam is taken on your own computer, with a human proctor watching over webcam throughout. The requirements are strict and they are checked before you start. If something fails, the exam does not begin and you may lose the session.
| Requirement | Indicative detail | How to prepare it |
|---|---|---|
| Identity document | Original, physical, valid, with a photo and a name in the Latin alphabet | Passport or national ID card. Photocopies and phone photos are not accepted |
| Matching name | The profile name must match the document exactly | Check it in your account days ahead; correcting it can take time |
| Webcam | It must be movable so you can show the whole room | External webcam or a laptop you can lift |
| Microphone | Mandatory and active | Check that the system has not muted it |
| Connection | Stable; a prolonged drop may invalidate the session | Wired if possible; disable automatic updates |
| Browser | Whichever the proctoring provider requires (usually Chrome or Chromium) | Install the required extension and test it |
| Clear desk | No papers, books, notes, phone, headphones, second screen | Empty the whole desk before starting |
| Room | Alone, door closed, nobody coming in | Warn whoever lives with you |
| No food | Normally forbidden | Water in a clear, label-free glass is usually allowed |
| No breaks | The clock does not stop | Go to the toilet just before |
| A single monitor | Usually only one is allowed | Physically disconnect the second one |
1.2 The system check beforehand
The proctoring provider offers a system check that can be run at any time. It is free and detects camera, microphone, bandwidth and browser-blocking problems.
Do it twice:
- The day you book the date, so you have room to manoeuvre if something fails.
- The day before the exam, in the same place, with the same equipment and at the same time of day as your slot (a home network does not behave the same at 09:00 as at 22:00).
Common problems and their fixes:
| Problem | Fix |
|---|---|
| The browser extension will not load | Disable ad blockers and other extensions |
| Webcam busy | Close Teams, Zoom, Slack and anything else holding the camera |
| Insufficient bandwidth | Cable instead of wifi; ask everyone else to stay off the network |
| Corporate VPN blocking it | Disconnect it completely |
| Corporate firewall | Do not sit the exam from a corporate network |
| The clipboard does not work | Try Ctrl+Shift+C / Ctrl+Shift+V in the terminal |
1.3 The check-in process on exam day
Book in 30 minutes ahead of the official time. Check-in usually takes 10-15 minutes and the exam clock does not start until the proctor lets you in, but arriving in a rush is the worst possible way to begin.
Typical sequence:
- You enter the virtual room from your Linux Foundation account.
- You show your identity document to the camera.
- You show the room with the webcam: desk, floor under the desk, walls, ceiling.
- You show your wrists and ears (no smartwatches or earphones allowed).
- You close every application except the exam browser.
- The proctor gives you access to the terminal and the clock starts.
1.4 Booking a date and the second-attempt policy
Enrolment usually includes one free retake if you fail the first attempt. Check the current conditions: there may be deadlines and limitations.
Why you should book the date before you feel ready:
This is probably the single most useful piece of advice in the whole lesson. The reason is structural, not psychological:
- No date, no plan. Studying without a date drags on indefinitely. With a date, the six-week plan from lesson
12-01becomes a real calendar. - The feeling of "being ready" never arrives. The exam is hands-on and there will always be a procedure you have not fully mastered. If you wait for certainty, you never sit it.
- The second attempt exists. The cost of failing the first one is time, not money. And a failed first attempt is the best study session there is: you come out knowing exactly what you are missing.
- The date can be moved. You can usually reschedule with enough notice (check the exact deadline, it is normally around 24 hours). Booking is not an irreversible commitment.
Recommended strategy: book the date six to eight weeks out on the day you start studying seriously. And if halfway through you see you are not going to make it, you move it.
Time of day: pick a slot when you are awake and the house is quiet. Two hours of continuous concentration with no breaks is not trivial. Avoid straight after lunch.
- The first 60 seconds: preparing the terminal
The moment you see the terminal, before reading the first task, type this block. It is about 40 seconds that gives you back between 15 and 25 minutes over the course of the exam.
2.1 The exact block
alias k=kubectl
export do='--dry-run=client -o yaml'
export now='--force --grace-period=0'
source <(kubectl completion bash)
complete -o default -F __start_kubectl kWhat each line does:
| Line | Effect |
|---|---|
alias k=kubectl |
Saves 7 characters on each of the ~200 commands you will type |
export do=... |
k run x --image=nginx $do > x.yaml generates the YAML skeleton |
export now=... |
k delete pod x $now deletes instantly, without waiting 30 s of grace |
source <(kubectl completion bash) |
Tab completion for resources, names and flags |
complete -o default -F __start_kubectl k |
Extends the completion to the k alias |
Important note: in the CKA and the CKS you may end up working on several nodes over ssh. The alias does not travel with the ssh session. When you get onto a node, either repeat the block or simply type kubectl in full. Bear in mind that $do does not exist there either.
2.2 Checking that it worked
If that comes out right, the arsenal is ready.
2.3 The vim settings
A second block, just as profitable. Type it before you open the first YAML:
cat <<'EOF' > ~/.vimrc
set number
set expandtab
set tabstop=2
set shiftwidth=2
set softtabstop=2
set autoindent
set paste
EOF| Setting | Why it is critical |
|---|---|
expandtab |
YAML forbids tabs. Without this, your manifest is rejected with a confusing error |
tabstop=2, shiftwidth=2, softtabstop=2 |
Kubernetes standard indentation: 2 spaces |
autoindent |
Keeps the level when you press Enter |
set paste |
The most important one. Without it, pasting from the documentation produces a growing staircase that breaks the YAML |
number |
API errors give you the line number |
Quick alternative with no file: if you would rather not create ~/.vimrc, inside vim you can type:
But doing it once in ~/.vimrc is safer than remembering it for every file.
2.4 Essential vim commands
| Action | Command |
|---|---|
| Insert / leave insert mode | i / Esc |
| Go to line N | :N |
| Go to the end / start of the file | G / gg |
| Search forwards / next occurrence | /text / n |
| Delete line / N lines | dd / Ndd |
| Copy line / paste | yy / p |
| Undo / redo | u / Ctrl+r |
| Select a block and indent | V (visual line), move, > or < |
| Replace throughout the file | :%s/old/new/g |
| Save and quit | :wq |
| Quit without saving | :q! |
| Toggle paste mode | :set paste / :set nopaste |
Practise this the week before the exam. Exam day is not the moment to remember how to delete five lines.
2.5 Setting each task's namespace
Two valid strategies. Pick one and be consistent:
# Strategy A: set the namespace on the context (faster)
k config set-context --current --namespace=rutas-norte-pro
# ...and from here on, no -n in the commands
# Strategy B: explicit -n on every command (more slip-proof)
k get pods -n rutas-norte-proA saves time but requires changing it at the start of every new task. B is impossible to forget but costs seconds. Many candidates use A and, in the final review, check every object with an explicit -n.
2.6 The exam notepad
The exam interface includes a notepad. Use it from minute one to keep your task list:
T1 4% done ✔
T2 7% SKIPPED - come back (NetworkPolicy egress)
T3 3% done ✔
T4 9% half done - Service missing
T5 5% done ✔
...Without this list, at minute 100 you will not remember what you left pending or which one was worth more.
- Making effective use of the allowed documentation
3.1 What is allowed
| Exam | Documentation allowed (indicative) |
|---|---|
| CKA | kubernetes.io/docs (includes the API reference and the blog) |
| CKAD | kubernetes.io/docs |
| CKS | kubernetes.io/docs + the official Trivy, Falco and AppArmor documentation |
Forbidden in all of them: general search engines, forums, GitHub, your own notes, other websites, AI tools, any local file that does not belong to the cluster. Only one additional tab is allowed besides the exam one.
Verify the exact list of allowed domains in the official handbook: it has changed between programme revisions.
3.2 How to search inside kubernetes.io
The site's own search is slow and often returns unhelpful results. Two better techniques:
Technique 1 — direct URL. Many pages have predictable paths:
kubernetes.io/docs/concepts/services-networking/network-policies/
kubernetes.io/docs/concepts/storage/persistent-volumes/
kubernetes.io/docs/tasks/configure-pod-container/security-context/
kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/
kubernetes.io/docs/reference/access-authn-authz/rbac/Technique 2 — Ctrl+F inside the page. Once you are on the right page, search for the field name you need (fsGroup, startingDeadlineSeconds, emptyDir) instead of reading the whole thing.
3.3 The pages worth having located
This is your mental cheat sheet. Memorise the search term, not the URL.
| I need | Search on kubernetes.io | Exam |
|---|---|---|
| PV and PVC manifest | "persistent volumes" | CKA, CKAD |
| Sample NetworkPolicy (all the variants) | "network policies" | All three |
| Ingress with rules and TLS | "ingress" | CKA, CKAD |
| Liveness/readiness/startup probes | "configure liveness readiness startup probes" | CKA, CKAD |
| Full securityContext | "security context" | CKAD, CKS |
| Pod Security Standards and admission | "pod security standards" / "pod security admission" | CKS |
| Audit policy | "auditing" | CKS |
| Encrypting Secrets at rest | "encrypting confidential data at rest" | CKS |
| seccomp profiles | "seccomp" | CKS |
| AppArmor | "apparmor" | CKS |
| RuntimeClass (gVisor) | "runtime class" | CKS |
| RBAC (Role, ClusterRole, bindings) | "rbac authorization" | All three |
| etcd backup and restore | "operating etcd clusters" | CKA |
| Upgrading the cluster | "upgrading kubeadm clusters" | CKA |
| Static pods | "static pods" | CKA |
| Taints and tolerations | "taints and toleration" | CKA, CKAD |
| Node and pod affinity | "assigning pods to nodes" | CKA, CKAD |
| ConfigMaps in pods | "configure pod configmap" | CKAD |
| Secrets in pods | "distribute credentials secure" | CKAD |
| Jobs and CronJobs | "cronjob" / "job" | CKAD |
| Multi-container pods and sidecars | "sidecar containers" | CKAD |
| kubectl cheat sheet | "kubectl cheat sheet" | All three |
| Debugging pods | "debug running pod" | All three |
3.4 Why copying and adapting beats typing
Compare the two routes for a NetworkPolicy:
Route A — typing it by hand:
1. Open vim 10 s
2. Recall apiVersion and kind 15 s (with doubts)
3. Type 20 lines of YAML 180 s
4. Fix indentation errors 60 s
5. Apply it and find something missing 40 s
TOTAL: ~5 minutes and a high risk of errorRoute B — copying and adapting:
1. Search "network policies" in the docs 15 s
2. Copy the closest example 10 s
3. Paste into vim (with set paste) 10 s
4. Change name, namespace, selectors 60 s
5. Apply 5 s
TOTAL: ~100 seconds and almost no riskThree times faster and a fraction of the risk. And the grader cannot tell whether you typed it or copied it: it only looks at the state of the cluster.
The objects that benefit most from this approach (the ones with no imperative generator):
- PersistentVolume and PersistentVolumeClaim
- NetworkPolicy
- StorageClass
- A full securityContext
- Probes with all their fields
- Audit policy
- EncryptionConfiguration
- RuntimeClass
- seccomp profiles
3.5 kubectl explain: the documentation without opening the browser
For one-off doubts about a field, this is quicker than going to the browser:
k explain pod.spec.containers.livenessProbe --recursive
k explain cronjob.spec --recursive | head -30
k explain networkpolicy.spec.ingress --recursive
k explain pod.spec.securityContext --recursive
k explain deployment.spec.strategy --recursiveAnd to recall the correct API version:
NAME SHORTNAMES APIVERSION NAMESPACED KIND
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicyk api-resources answers "what was the apiVersion for this again?" in two seconds.
- Managing time during the exam
4.1 The initial quick pass
Spend the first 4-5 minutes reading ALL the tasks without solving any of them. It feels counter-intuitive, but it is the most profitable investment in the exam.
As you read, note down in the notepad, for each task:
| Column | What to note |
|---|---|
| No. | Task number |
| Weight | The percentage given in the statement |
| Difficulty | E (easy), M (medium), H (hard) for you |
| Status | blank / ✔ / ⏸ (skipped) / ½ (half done) |
A typical result:
Now you have a map. Without it, you are flying blind.
4.2 The order of attack
Phase 1 (minutes 5-40): the cheap ones. All the Es, in the order they appear. They are quick, guaranteed points and they get you into rhythm. Psychologically, starting by stacking up wins changes the whole exam.
Phase 2 (minutes 40-95): the central block. The Ms and the Hs, prioritised by weight. This is where the pass is decided. The heaviest ones go in this block because you need time and a fresh head, but not so late that the clock catches you.
Phase 3 (minutes 95-110): the outstanding ones. You go back to the skipped and half-finished ones. With what you learned on the other tasks, the solution is often obvious by now.
Phase 4 (minutes 110-120): review. Not a single new task. Checking only.
0───5────────────────40──────────────────95──────110─────120
│ read │ easy ones │ central block │ pending │ review │4.3 The per-task limit
Hard rule: if a task overruns its target time by more than 50 %, you flag it and leave it.
| Task weight | Target time | Hard limit |
|---|---|---|
| 2-4 % | 3-4 min | 6 min |
| 5-7 % | 6-8 min | 10 min |
| 8-10 % | 10-12 min | 15 min |
Why this works: a 4 % task you have spent 12 minutes on has cost you the equivalent of two 5 % tasks you would have solved. The arithmetic is merciless: the exam does not reward perseverance, it rewards output per minute.
How to skip well:
- Leave in place whatever you managed to do (partial marks).
- Note it in the notepad with a remark about where you got stuck.
- Move to the next one without dwelling on it.
Coming back later with a clear head solves half of the blockages.
4.4 The last 10 minutes
Starting a new task is forbidden. That time is for:
# Go through the completed tasks and check each one
k config use-context <the task's context>
k get all -n <namespace>
k get pods -n <namespace> # is everything Running?Concrete review checks:
| Check | Command |
|---|---|
| Is the object in the right namespace? | k get <kind> <name> -n <ns> |
| Is it on the right cluster? | k config current-context before each get |
| Are the pods Running, not Pending or CrashLoop? | k get pods -n <ns> |
| Does the Service have endpoints? | k get endpoints <svc> -n <ns> |
| Is the PVC Bound, not Pending? | k get pvc -n <ns> |
| Does the Deployment have the requested replicas? | k get deploy -n <ns> |
| Does the requested file exist and have content? | cat /opt/file.txt |
Finding a single object in the wrong namespace during this review already pays for the ten minutes.
- The mistakes that cost the most points
In order of damage caused.
5.1 Not switching context to the task's cluster
Mistake number one, and the most expensive: zero marks on a perfectly solved task.
Every task starts with its context command. Copy it and run it always, even if you believe it is the same as the previous task's.
Habit to train: the use-context is the first command, before you have even finished reading the statement. Make it automatic.
5.2 Not setting the requested namespace
The second most expensive mistake, for the same reason: the object is created in default and the grader cannot find it.
Or -n on every command. But one of the two, always.
Special case: cluster-scoped objects (PersistentVolume, StorageClass, ClusterRole, ClusterRoleBinding, Namespace, RuntimeClass, PriorityClass, IngressClass) take no namespace. Giving them one does not raise an error, it is simply ignored, but knowing which ones they are avoids confusion.
5.3 Leaving the object half-created
A typical situation: you create the Deployment, get distracted by the Service, and the Deployment is left with the wrong image. Or you apply a YAML with an error and do not look at the result.
If it had said error validating data: ValidationError..., the task is not done. Read the output of every command.
5.4 Not checking that what you created actually works
An object existing does not mean it works. The cases that cost the most points:
| Object created | It may exist but not work if... | How to spot it |
|---|---|---|
| Deployment | The image does not exist or the pods will not start | k get pods → ImagePullBackOff |
| Service | The selector does not match the pods' labels | k get endpoints → empty |
| PVC | There is no compatible PV | k get pvc → Pending |
| Pod with nodeSelector | No node carries the label | k get pods → Pending |
| Ingress | The IngressClass is missing or the backend does not exist | k describe ingress → no ADDRESS |
| NetworkPolicy | The CNI does not support policies | Test real connectivity |
| CronJob | Invalid cron syntax | k get cronjob → LAST SCHEDULE: <none> |
| RoleBinding | It points at a Role or SA that does not exist | k auth can-i --as=... → no |
The rule: one check per task, always.
5.5 Losing time typing YAML by hand
This is already covered in section 3.4, but it bears repeating because it is the mistake that most quietly ruins exams. You do not fail because of it directly: you fail because you had three tasks left undone.
The speed hierarchy, fastest to slowest:
1. Direct imperative command k create deployment x --image=y
2. Imperative command + $do + edit k create ... $do > x.yaml && vim x.yaml
3. Copy from the documentation (for whatever has no generator)
4. kubectl edit / kubectl patch (to modify what already exists)
5. Write from scratch ← only if there is no other way5.6 Other frequent mistakes
| Mistake | Consequence | Prevention |
|---|---|---|
Pasting YAML without set paste |
Broken indentation, invalid manifest | ~/.vimrc in minute one |
Using kubectl edit on immutable fields |
Cryptic error and lost minutes | Export, delete, recreate |
| Saving a file to the wrong path | The grader cannot find it | Copy and paste the path from the statement |
| Leaving a task completely empty | Zero, when there were partial marks | Always do what you know |
| Not reading the statement to the end | You miss the last requirement | Read it twice before typing |
Confusing -n (namespace) with -A (all) |
You look in the wrong place | Pay attention to the command |
| Working on the wrong node over ssh | Changes on the machine you did not mean | hostname after every ssh |
Forgetting to leave the ssh session |
The next commands run on the node | An explicit exit and check with hostname |
- The habit of verifying every task
6.1 The three-step cycle
Every task must follow this sequence, without exception:
1. CONTEXT → k config use-context X
2. SOLVE → the command or manifest
3. VERIFY → the k get that proves it is rightStep 3 is not optional. It costs 5-10 seconds and catches half your mistakes before it is too late.
6.2 The right check for each object
# Deployment: replicas ready
k get deploy bookings-api -n rutas-norte-pro
# READY must be 3/3, not 0/3
# Service: populated endpoints
k get endpoints bookings-api-svc -n rutas-norte-pro
# ENDPOINTS cannot be empty
# Pod: Running status
k get pod web-store -n rutas-norte-pro
# STATUS Running, READY 1/1
# ConfigMap/Secret consumed: check it INSIDE the pod
k exec bookings-api -n rutas-norte-pro -- env | grep LOG_LEVEL
k exec bookings-api -n rutas-norte-pro -- ls /etc/secrets
# PVC: bound
k get pvc -n rutas-norte-pro
# STATUS Bound, not Pending
# RBAC: effective permission
k auth can-i list pods --as=system:serviceaccount:ns:sa -n ns
# yes / no depending on what was asked
# NetworkPolicy: real connectivity
k run t --rm -it --image=busybox:1.36 --restart=Never -n ns -- nc -zv svc 5432
# CronJob: trigger it manually instead of waiting
k create job test --from=cronjob/reports -n ns
k logs job/test -n ns
# Ingress: rules and backends
k describe ingress store -n rutas-norte-pro | grep -A5 Rules
# Node: status
k get nodes
# Requested file: it exists and has content
cat /opt/result.txt
wc -l /opt/result.txt6.3 Leaving the kubectl get that proves it
Beyond verifying for yourself, some tasks explicitly ask you to save a result into a file. Those are direct marks and they get missed through carelessness:
# "Save the name of the pod using the most CPU in /opt/cpu.txt"
k top pods -n rutas-norte-pro --sort-by=cpu --no-headers | head -1 | awk '{print $1}' > /opt/cpu.txt
cat /opt/cpu.txt # ← ALWAYS check that the file is not empty
# "Write the nodes labelled disk=ssd into /opt/nodes.txt"
k get nodes -l disk=ssd -o name > /opt/nodes.txt
cat /opt/nodes.txt
# "Save the logs of container X into /opt/logs.txt"
k logs bookings-api -c api -n rutas-norte-pro > /opt/logs.txt
wc -l /opt/logs.txtClassic mistake: the command fails, the redirection creates an empty file, and you never look at it. A one-second cat prevents it.
- Mental and physical preparation
7.1 The week before
| Days before | What to do | What NOT to do |
|---|---|---|
| 7-5 | Final revision of new content | — |
| 4-3 | Two full timed mock exams | Learning new topics |
| 2 | Light revision: commands, shortcuts and the documentation cheat sheet only | Long mock exams |
| 1 | System check. Prepare the room. Sleep well. | Studying late |
| 0 | Normal breakfast, arrive 30 min early | Excessive coffee |
Do not study new content in the last 48 hours. It does not stick and it raises anxiety. What you already know is what you take in with you.
7.2 The timed rehearsal
Mock exams only help if they are realistic:
- Two straight hours, no breaks, no phone, no getting up.
- Only the allowed documentation open. No googling "how did this go again".
- In the same place, with the same equipment you will use on exam day.
- Marked at the end, not as you go.
Lesson 12-05 of this course is exactly that: a complete mock exam with fifteen timed tasks and its solutions.
What to measure in each mock exam:
| Metric | Target |
|---|---|
| Total score | Comfortably above the pass mark (~75 %) |
| Tasks never started | Zero |
| Time left over | At least 10 minutes |
| Context/namespace mistakes | Zero |
| Tasks that blew their limit | One at most |
7.3 An identical practice environment
Details that look minor and are not:
- The same keyboard. If you practise on one keyboard and sit the exam on another, you lose speed and make typos.
- The same keyboard layout (Spanish, English). The characters
|,\,{,},"and-appear constantly in YAML and commands. - The same browser and the same resolution.
- Practise copy and paste in a web terminal. The shortcuts (
Ctrl+Shift+C/Ctrl+Shift+V) differ from those of a native terminal, and exam day is not the moment to find that out. - Practise with a split screen: terminal on the left, documentation on the right. That is how you will be working.
7.4 During the exam: your head
- The first few minutes are the worst. That is normal. The initial reading pass helps precisely here: it gives you control before you start typing.
- If a task blocks you, skip it. It is not a failure, it is the correct strategy.
- Do not calculate your score in your head during the exam. It distracts you and it is almost always pessimistic.
- Breathe before touching anything critical. Above all before editing the apiserver in the CKS.
- Accept imperfection. With a threshold around 66 %, you can get a third of the exam wrong and still pass.
- If something goes wrong during the exam
8.1 Technical problems
| Problem | What to do |
|---|---|
| The terminal freezes | Reload the exam page; the session recovers |
| The connection drops | Reconnect immediately; the proctor sees it and it usually resumes |
| A task's cluster does not respond | Tell the proctor in the chat; there may be a restart procedure |
| The clipboard does not work | Try the alternative shortcuts; if not, report it |
| The browser closes | Reopen it and rejoin the session |
| A command leaves the cluster unusable | That is on you; this is exactly why the CKS calls for a manifest backup first |
Important: if something fails because of the platform, tell the proctor at that moment, not at the end. Get it on record. Complaining after you have finished, with no record from during the session, has little chance.
8.2 How to contact the proctor
Throughout the exam there is a chat in the interface. That is the official channel.
Write in English and be specific: task number and symptom. The proctor cannot give you hints about the content, but they can solve platform problems.
You can also use the chat to:
- Ask permission to drink water (subject to the rules).
- Report an unavoidable noise in your environment.
- Report any external interruption.
Never: ask anything about the content of the tasks. The answer will be no and it eats your time.
8.3 Conduct rules that get forgotten
Breaches that can invalidate the exam and that people commit with no bad intent:
- Speaking out loud or muttering the statements as you read them. The microphone picks it up.
- Looking away from the screen repeatedly.
- Getting up without permission.
- Someone walking into the room.
- Having your phone in sight, even switched off.
- Wearing earphones or a smartwatch.
- Taking notes on paper.
Warn whoever lives with you, close the door and leave the phone in another room.
- After the exam: result, review, renewal and how to prove it
9.1 The result
- The result arrives by email, usually within 24 hours (indicative; check the current turnaround).
- You get the overall score and, if you fail, a breakdown by domain with your performance in each one.
- If you pass, you receive the PDF certificate and a verifiable digital badge.
9.2 If you do not pass
It is not a disaster and it is more common than it looks. Enrolment usually includes one free retake.
Action plan:
- Write down what you remember the same day. Which kinds of task appeared, which ones blocked you, where you lost time. That information evaporates within 48 hours and it is pure gold.
- Read the breakdown by domain. It tells you exactly where you fell short.
- Diagnose the real cause, which is almost always one of these three:
| Cause | Symptom | Remedy |
|---|---|---|
| Lack of knowledge | You knew what had to be done but not how | Revise the lessons of the weak domain and practise them |
| Lack of speed | You knew how to do everything but ran out of time | Aliases, $do, copying from the documentation, timing yourself |
| Process failures | Context, namespace, not verifying | Train the context-solve-verify cycle |
- Book the second attempt 3-4 weeks out. Not sooner (no time to fix things) and not much later (you lose your form).
- Work only on what failed. Do not redo the whole syllabus.
9.3 Renewal and expiry
| Aspect | Indicative detail |
|---|---|
| Validity | Around two years from the pass date |
| Renewal | By passing the exam again before it expires (check whether alternative routes are currently available) |
| Reminder | There are usually email reminders as the date approaches |
| Effect of expiring | The certification is no longer current and disappears from public verification |
| Impact on the CKS | If your CKA expires, you cannot sit the CKS until you renew it |
Calendar tip: note the expiry date the same day you pass, with a reminder four months beforehand. That gives you room to prepare the renewal without pressure.
And bear in mind that renewal is not just bureaucracy: Kubernetes changes fast, and the exam curriculum is updated with each version. Renewing is a way of staying current.
9.4 How to prove the certification
| Route | How |
|---|---|
| Digital badge | Issued on a verifiable credentials platform. It can be added to LinkedIn, your email signature or a personal site |
| PDF certificate | Downloadable from your Linux Foundation portal |
| Public verification | The CNCF keeps a searchable directory where anyone can validate a certification by your name or the ID |
| The "Licenses and certifications" section, with the verification URL and the expiry date | |
| CV | Full certification name, issuing body and date. Example: Certified Kubernetes Administrator (CKA) — The Linux Foundation, 2026 |
Practical tip: always include the verification link. It separates a real certification from a claim, and technical recruiters appreciate it.
9.5 And then what?
Passing is not the end of the road:
- Apply it. A certification without practice rusts within months. Keep operating clusters.
- Chain them. If you hold the CKAD, the CKA is one step away. If you hold the CKA, the CKS is the natural specialisation.
- Extend into the ecosystem. The CNCF offers other certifications (Prometheus, Istio, Argo, GitOps, and introductory ones such as KCNA and KCSA). Revisit module 10 to see where each tool fits.
- Keep a cluster of your own. A kind or minikube on your laptop is enough to keep your reflexes sharp.
Common Mistakes and Tips
The technique mistakes, summarised
| Mistake | Cost | One-line prevention |
|---|---|---|
| Not switching context | The whole task | First command, always |
| Not setting the namespace | The whole task | set-context --current --namespace= |
| Not doing the initial reading pass | Bad prioritisation all exam long | 5 minutes reading before typing |
| Getting stuck with no limit on one task | 2-3 tasks lost | Hard limit and skip |
| Typing YAML by hand | 15-20 minutes of the exam | $do and copy from the documentation |
Pasting without set paste |
Invalid manifests | ~/.vimrc in minute one |
| Not verifying what you did | Points you thought you had | A closing k get per task |
| Leaving tasks empty | Partial marks lost | Do what you know |
| Not reviewing at the end | Undetected mistakes | Last 10 minutes, review only |
| Arriving right on time | Stress and the risk of losing the session | 30 minutes early |
| Not running the system check | An exam that will not start | Run it twice |
| A name that differs from the document | They will not let you start | Check it weeks ahead |
| An empty output file | Points given away | cat after every redirection |
Tips that sum up the lesson
- Book the date before you feel ready. No date, no plan.
- The first 60 seconds are worth 20 minutes: aliases,
$do, completion,.vimrc. - Read every task before solving any of them. Five minutes that organise the two hours.
- Copying from the documentation is the correct strategy, not a shameful shortcut.
- The cycle is context → solve → verify. All three steps, always.
- Skipping is a strategic decision, not a surrender.
- The last 10 minutes are for reviewing, never for a new task.
- Simulate the whole exam at least twice before the real day.
- If you fail, write down what you remember the same day and use the retake in 3-4 weeks.
- Note the expiry date the day you pass.
Exercises
Exercise 1 — The start-up block, timed
In a clean terminal (container, VM or new session), and with a timer:
- Type from memory the complete block of aliases, variables and completion.
- Create the
~/.vimrcwith the seven settings. - Prove that it works: generate a pod's YAML with
$do, open it in vim, paste in asecurityContextblock copied from the documentation, save it and apply it.
Target: under 3 minutes in total, with no reference material.
Repeat it five days running until it comes out without thinking.
Exercise 2 — A two-hour plan for a fictional exam
You are given this task list from an imaginary exam. Without solving them, draw up your plan of attack: order, time allocated to each one and which phase you would tackle it in.
| Task | Weight | Description |
|---|---|---|
| 1 | 4 % | Create a 3-replica Deployment and expose it |
| 2 | 8 % | Configure the apiserver audit policy |
| 3 | 3 % | Scale an existing Deployment to 5 replicas |
| 4 | 7 % | Default-deny NetworkPolicy with exceptions |
| 5 | 10 % | etcd backup and restore |
| 6 | 4 % | Create a ConfigMap and inject it as variables |
| 7 | 6 % | PV + PVC + a Pod that mounts it |
| 8 | 5 % | Add probes to an existing Deployment |
| 9 | 9 % | NotReady node: diagnose and fix |
| 10 | 3 % | Write the pods sorted by restarts into a file |
| 11 | 7 % | RBAC: SA + Role + RoleBinding and verification |
| 12 | 6 % | Ingress with two path rules |
| 13 | 4 % | CronJob with concurrencyPolicy |
| 14 | 8 % | Upgrade a worker node |
| 15 | 6 % | Harden an insecure pod |
Exercise 3 — Your own documentation cheat sheet
Build your own "I need X → I search for Y on kubernetes.io" table, with at least 20 entries, ordered by the frequency you expect in your exam (CKA, CKAD or CKS).
Then verify every entry: open kubernetes.io, search for the term you wrote down and check that the first or second result is the page you need. Fix any terms that do not work.
Solutions
Solution to Exercise 1
# Block 1 (~20 s)
alias k=kubectl
export do='--dry-run=client -o yaml'
export now='--force --grace-period=0'
source <(kubectl completion bash)
complete -o default -F __start_kubectl k
# Block 2 (~20 s)
cat <<'EOF' > ~/.vimrc
set number
set expandtab
set tabstop=2
set shiftwidth=2
set softtabstop=2
set autoindent
set paste
EOF
# Demonstration (~90 s)
k run bookings-api --image=nginx:1.27-alpine $do -n default > api.yaml
vim api.yamlInside vim, pasting the block copied from the documentation:
apiVersion: v1
kind: Pod
metadata:
name: bookings-api
spec:
securityContext:
runAsNonRoot: true
runAsUser: 10001
containers:
- name: bookings-api
image: nginx:1.27-alpine
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]Self-assessment: if it took you more than 3 minutes, work out where. The usual culprits are hesitating on the complete -o default line or wrestling with vim. Both are fixed by repetition.
The trap in this exercise: if the YAML comes out as a staircase when you paste it into vim, set paste was not active. Check it with :set paste? inside vim.
Solution to Exercise 2
Total: 100 %, 15 tasks, 120 minutes.
Classification by typical difficulty and target time:
| Task | Weight | Difficulty | Target | Phase |
|---|---|---|---|---|
| 3 | 3 % | E | 2 min | 1 |
| 10 | 3 % | E | 3 min | 1 |
| 1 | 4 % | E | 4 min | 1 |
| 6 | 4 % | E | 4 min | 1 |
| 13 | 4 % | E | 4 min | 1 |
| 8 | 5 % | E/M | 5 min | 1 |
| 7 | 6 % | M | 7 min | 2 |
| 12 | 6 % | M | 6 min | 2 |
| 15 | 6 % | M | 6 min | 2 |
| 11 | 7 % | M | 6 min | 2 |
| 4 | 7 % | M | 7 min | 2 |
| 2 | 8 % | H | 11 min | 2 |
| 14 | 8 % | H | 11 min | 2 |
| 9 | 9 % | H | 10 min | 2 |
| 5 | 10 % | H | 12 min | 2 |
Time allocation:
Min 0-5 Reading pass and classification
Min 5-27 Phase 1: tasks 3, 10, 1, 6, 13, 8 → 23 points in 22 minutes
Min 27-97 Phase 2: 7, 12, 15, 11, 4, 2, 14, 9, 5 → 77 points available
Min 97-110 Phase 3: outstanding and half-finished ones
Min 110-120 ReviewAnalysis of the plan:
- Phase 1 secures 23 points in 22 minutes, a little over a point a minute. It is the best return in the exam and that is why it goes first.
- The four heaviest tasks (2, 5, 9, 14) add up to 35 points and about 44 minutes. They are the deciding ones. They go in the central block, not at the end.
- With 23 (phase 1) + 35 (the four big ones) = 58 points, you still do not pass. You also need the medium ones: 7, 12, 15, 11 and 4 add another 32 points. That is your real margin.
- If tasks 5 (etcd) and 14 (upgrade) get stuck, the hard 15-minute limit stops the two of them eating 40 minutes.
The mistake this exercise prevents: starting at task 1 and carrying on in order. You would reach task 5 (10 %) around minute 30 with a fresh head —that part is fine— but task 9 (9 %) and task 14 (8 %) would fall at the end, rushed and tired. And the easy ones at the end (10, 13) might go undone, giving away 7 points that cost 7 minutes.
Solution to Exercise 3
An extract from a CKA cheat sheet, ordered by expected frequency:
| I need | Search term | Target page | Verified |
|---|---|---|---|
| kubectl cheat sheet | kubectl cheat sheet |
Reference › kubectl Cheat Sheet | Yes |
| NetworkPolicy | network policies |
Concepts › Services, Load Balancing, and Networking | Yes |
| PV and PVC | persistent volumes |
Concepts › Storage › Persistent Volumes | Yes |
| etcd backup | operating etcd clusters |
Tasks › Administer a Cluster | Yes |
| Cluster upgrade | upgrading kubeadm clusters |
Tasks › Administer a Cluster | Yes |
| RBAC | rbac authorization |
Reference › Access Authn Authz | Yes |
| Probes | configure liveness readiness startup probes |
Tasks › Configure Pods and Containers | Yes |
| Ingress | ingress |
Concepts › Services... › Ingress | Yes |
| Taints and tolerations | taints and tolerations |
Concepts › Scheduling | Yes |
| Node affinity | assign pods to nodes using node affinity |
Tasks › Configure Pods and Containers | Yes |
| Static pods | static pods |
Tasks › Configure a kubelet | Yes |
| DaemonSet | daemonset |
Concepts › Workloads › Controllers | Yes |
| StorageClass | storage classes |
Concepts › Storage | Yes |
| Debugging pods | debug running pods |
Tasks › Monitoring, Logging, and Debugging | Yes |
| Debugging the cluster | troubleshoot clusters |
Tasks › Monitoring, Logging, and Debugging | Yes |
| ConfigMap in a pod | configure a pod to use a configmap |
Tasks › Configure Pods and Containers | Yes |
| Secret in a pod | distribute credentials securely using secrets |
Tasks › Inject Data Into Applications | Yes |
| Cluster DNS | dns for services and pods |
Concepts › Services... | Yes |
| CronJob | running automated tasks with a cronjob |
Tasks › Run Jobs | Yes |
| securityContext | configure a security context |
Tasks › Configure Pods and Containers | Yes |
| CSR / user certificates | certificate signing requests |
Reference › Access Authn Authz | Yes |
| Resource quotas | resource quotas |
Concepts › Policy | Yes |
The value of the exercise is in the verification step. Terms that look obvious often do not lead to the right page: searching for "backup etcd" gives scattered results, whereas "operating etcd clusters" goes straight there. Discovering that now is worth minutes on exam day.
Extra tip: for the CKS, add a second table with falco.org/docs (rule syntax, the list of %evt.* and %container.* fields) and aquasecurity.github.io/trivy (severity flags and output formats).
Conclusion
Technical knowledge is a necessary condition for passing the CKA, the CKAD or the CKS, but not a sufficient one. The exam format —hands-on, timed, with several clusters and remote proctoring— adds a layer of difficulty that is prepared for separately, and that is exactly what you have worked on in this lesson.
What to take away:
- Before: run the system check twice, prepare the room and the identity document, and book the date before you feel ready —no date, no plan, and the retake exists.
- The first 60 seconds: the
kalias,$do,$now, completion and~/.vimrcwithset paste. Forty seconds that give you back twenty minutes. - The allowed documentation is a tool, not a crutch: copying an example and adapting it is three times faster and far safer than writing a manifest from scratch.
- Time is managed in four phases: read everything, solve the cheap ones, attack the central block by weight, and review. With a hard limit per task and no regrets about skipping.
- The costliest mistakes are not technical: not switching context, not setting the namespace, leaving objects half-done, not checking that they work, and typing YAML by hand.
- The cycle for every task is always the same: context → solve → verify. All three steps, without exception.
- Prepare physically and mentally too: realistic mock exams, an identical environment, rest, and no new topics in the last 48 hours.
- If something goes wrong, tell the proctor at the time, through the chat and in English.
- Afterwards: read the domain breakdown if you fail, diagnose whether the problem was knowledge, speed or process, and note the expiry date the same day you pass.
- Always check the Candidate Handbook and the current conditions before booking: requirements, deadlines and policies change.
Only one thing remains: putting it all to the test. The next and final lesson of the course is the final mock exam: fifteen timed tasks on the Rutas Norte platform, with their scoring, a complete solution set and a self-assessment table that will tell you whether you are ready to book the date or which modules are worth revising first. Get the timer and a clean cluster ready.
Kubernetes Course
Module 1: Introduction to Kubernetes
- What Is Kubernetes?
- Kubernetes Architecture
- Key Concepts and Terminology
- Setting Up a Kubernetes Cluster
- The Kubernetes CLI: kubectl
- Objects, YAML Manifests and the Declarative Model
- The Course Project: the Rutas Norte Platform
Module 2: Core Kubernetes Components
- Pods
- ReplicaSets
- Deployments
- Updates, Rollbacks and Deployment Strategies
- Services
- Namespaces
- Labels, Selectors and Annotations
Module 3: Configuration and Secret Management
- ConfigMaps
- Secrets
- Environment Variables
- Resource Quotas and Limits
- LimitRanges and Quality of Service (QoS) Classes
- ServiceAccounts and API Access from Pods
Module 4: Networking in Kubernetes
- Cluster Networking
- Service Types
- Internal DNS and Service Discovery
- Ingress Controllers
- TLS and Certificate Management with cert-manager
- Network Policies
Module 5: Storage in Kubernetes
- Volumes
- Persistent Volumes
- Persistent Volume Claims
- Storage Classes
- Dynamic Provisioning, Expansion and Snapshots
- Backup and Restore of Persistent Data
Module 6: Advanced Kubernetes Concepts
- StatefulSets
- DaemonSets
- Jobs and CronJobs
- Init Containers, Sidecars and Multi-Container Patterns
- Scheduling: Affinity, Taints and Tolerations
- Custom Resource Definitions (CRDs)
- Operators and the Controller Pattern
Module 7: Monitoring and Logging
- Health Checks and Probes
- Metrics Server and kubectl top
- Monitoring with Prometheus
- Visualization and Alerting with Grafana and Alertmanager
- Centralized Logging with Elasticsearch, Fluentd and Kibana (EFK)
- Application Debugging and Cluster Events
Module 8: Kubernetes Security
- Role-Based Access Control (RBAC)
- Security Contexts and Container Hardening
- Pod Security Policies and Pod Security Standards
- Network Security
- Image Security
- Auditing, Scanning and Vulnerability Management
Module 9: Scaling and Performance
- Horizontal Pod Autoscaling
- Vertical Pod Autoscaling
- Cluster Autoscaling
- Event-Driven and Custom-Metric Scaling with KEDA
- High Availability: PodDisruptionBudgets and Topology
- Performance Tuning
Module 10: Kubernetes Ecosystem and Tooling
- Minikube and Local Environments with kind
- Kubeadm
- Helm
- Kustomize
- GitOps with Argo CD and Flux
- Managed Kubernetes: EKS, AKS and GKE
Module 11: Case Studies and Real-World Applications
- Deploying a Web Application
- Running Stateful Applications
- CI/CD with Kubernetes
- Deployment Strategies: Blue-Green and Canary
- Multi-Cluster Management
- Production Operations: Incidents, Runbooks and Costs
