Challenges

Focused, hands-on problems for sharpening your DevOps and server-side skills. Some teach specific concepts while others mirror real-world scenarios. Every challenge includes hints, feedback, and automated solution checks.

Collection
Category
Difficulty
Challenge ·Easy

CKA Practice: Recover a NotReady Node After a Kubelet Configuration Error

A worker node dropped to NotReady and part of the workload went with it. The container runtime is fine and the control plane is healthy; the trail leads from kubectl symptoms down into systemd and the kubelet configuration. Diagnose the node and bring it back.

Submissions: 31/40
Challenge ·Easy

Port-Forward a Kubernetes Service to localhost

A Deployment running a distroless Chainguard nginx image (cgr.dev/chainguard/nginx) is deployed in the namespace webapps, fronted by a ClusterIP Service. Port-forward that Service to localhost port 3333 on cplane-01, use curl to save the response body to /home/laborant/index.html, and verify the file is accessible and contains the expected content.

Submissions: 45/50
Challenge ·Easy

Debug a Failing Kubernetes Job

A Job manifest at /home/laborant/batch-job.yaml is exiting with a non-zero exit status. The Job has limited retries configured. Inspect the cluster and the manifest to find the bug, fix it, and reapply.

Submissions: 61/74
Challenge ·Easy

Access the Kubernetes API Server via kubectl proxy

Use kubectl proxy to open a local, already authenticated HTTP endpoint to the Kubernetes API server, then use curl to list every Secret in the gliese-581 namespace and save the raw JSON response to /home/laborant/secret-list.json.

Submissions: 45/53
Challenge ·Easy

Configure a Memory-Backed emptyDir Volume with a Size Limit

A Deployment is using a disk-backed emptyDir volume. Convert it to a memory-backed tmpfs volume for better performance — but make sure to set a size limit to prevent the Pod from exhausting the node's RAM.

Submissions: 68/79
Challenge ·Easy

Inject an Ephemeral Container into a Distroless Pod and Test Cross-Namespace HTTP

A distroless pod running in the cherry namespace has no shell or debugging tools. Use kubectl debug to attach an ephemeral container, test connectivity to the request-logger service, and verify the request was received in its logs.

Submissions: 75/97