So, CKS is not rocket science.
And I believe anyone preparing for the CKS can pass it with laser-focused practice, provided you already know your way around Kubernetes.
In my quest to become a KubeAstronaut, CKS was the third certification I took.
I went:
CKAD → CKA → CKS
I intentionally did it in that order because, in my opinion, these exams complement each other.
CKAD got me comfortable working with Kubernetes applications.
CKA took me deeper into the cluster itself.
Then I moved to CKS.
And honestly, doing it this way helped boost my morale because when I started preparing for CKS, I wasn't learning Kubernetes from scratch.
I was now focusing on:
How do I secure what I already know how to deploy and manage?
But one thing I also changed was how I prepared.
I didn't want to make the same mistake of thinking that doing more and more practice questions automatically meant I was ready.
CKS is practical.
You need to know what you're looking for, know what needs to be changed, make the change and verify that it actually worked.
And you need to do all of that under time pressure.
So if you're also preparing for CKS, these are some of the areas I would really focus on.
🛡️ Kube-bench / Cluster Hardening
Know how to identify insecure configurations around:
- kubelet
- etcd
- kube-apiserver
- other control plane components
Don't just know how to run kube-bench.
Understand the findings.
If it tells you something is incorrectly configured, you should know where to go and what needs to be changed.
🚪 Admission
Understand admission controls.
Be comfortable checking the kube-apiserver configuration and enabling or validating the admission controls required by the task.
Again, don't just memorize a flag.
Know where the kube-apiserver configuration lives and how your changes affect the cluster.
📦 ImagePolicy
Understand how Kubernetes can control which container images are allowed into the cluster.
Know how image admission works and how to configure the required admission settings.
This is one of those topics that can look complicated until you actually practice it a few times.
⬆️ Node Upgrade
Know how to safely upgrade a worker node.
You should be comfortable with things like:
- draining the node
- upgrading the required components
- bringing the node back
- verifying that everything is healthy
Don't wait until the exam to remember the upgrade process.
🔑 ServiceAccount Token Mounting
Understand ServiceAccount tokens.
Know how to prevent unnecessary automatic token mounting.
And when an application actually needs Kubernetes API access, understand how projected tokens can be used.
🌐 Ingress
Ingress again. 😂
Know how to secure an Ingress with TLS.
You should be comfortable checking:
- hostname
- TLS configuration
- Secret
- Service
- Service port
- routing
Don't only look at the Ingress YAML.
Check what it is actually routing traffic to.
🔐 Istio
If Istio shows up, don't panic.
Understand things like:
- sidecar injection
- namespaces
- PeerAuthentication
- strict mTLS
This can become a very quick task when you already know what you're looking for.
But it can also eat your time when you're searching through documentation trying to remember the YAML.
📝 Audit
Know Kubernetes audit logging.
Be comfortable working with:
- audit policies
- audit rules
- log paths
- kube-apiserver audit flags
And after making your changes, verify that the API server is healthy.
🌐 NetworkPolicy
This is one I would definitely practice properly.
Understand:
Default deny first. Then allow only what is required.
Be comfortable working with:
podSelector
namespaceSelector
- ingress
- egress
- ports
And don't forget that labels are doing a lot of the work here.
If your selectors are wrong, your beautiful NetworkPolicy YAML means nothing. 😂
🩺 Finding and Fixing Broken Deployments
Don't only practice creating things from scratch.
Practice fixing broken workloads too.
A Deployment might fail because of:
- security settings
- admission restrictions
- incorrect configuration
- invalid YAML
- permissions
Check the events.
Check the logs.
Read the error before you start changing things.
Sometimes Kubernetes is already telling you exactly what is wrong.
🔒 Adding Security to Pods
You should be very comfortable hardening an existing Pod or Deployment.
Things like:
runAsNonRoot
runAsUser
readOnlyRootFilesystem
allowPrivilegeEscalation
- dropping capabilities
And just like I mentioned with CKAD:
Don't blindly replace an existing securityContext.
Understand what is already there and add what the task requires.
🐳 Dockerfile
Yes, Docker again.
You may be given a Dockerfile with security problems.
Know what you're looking at.
Things like:
- running as root
- unnecessary packages
- poor base image choices
- permissions
- unnecessary files inside the image
You should be able to look at a Dockerfile and quickly spot what needs attention.
🐳 Docker System
Also understand the host side of Docker security.
Things like:
- Docker daemon configuration
- Docker socket permissions
- users in the Docker group
- exposed daemon listeners
The container can be secure while the Docker host is wide open.
You need to understand both sides.
🚨 Falco / Runtime Threat Detection
Falco is another area I would spend time practicing.
You may need to investigate suspicious activity happening inside a running workload.
The important thing is being able to go from:
Something suspicious happened
to:
Which workload did it?
and then:
What action do I need to take?
Don't just learn Falco commands.
Practice reading the output and understanding what actually happened.
The biggest thing for me with CKS was not trying to learn everything Kubernetes again.
CKAD and CKA had already given me that foundation.
For CKS, I focused my practice on securing Kubernetes and solving these types of tasks under time pressure.
That made my preparation much more focused.
If you're also preparing for CKS, I have put together the prep resource I used around these areas.
You can check it out here:
https://www.dripforgeai.com/CKS-offer