Challenges by Kaloyan Preslavski

Focused, hands-on DevOps and server-side problems with hints, feedback, and automated solution checks.

Challenge

Kubernetes Workloads: StatefulSets

Build a StatefulSet with a headless Service, watch ordered Pod creation, verify per-replica PVC naming, scale down and back up, prove stable identity, then roll an image update and roll back using ControllerRevision history.

Challenge

Kubernetes Workloads: ReplicaSets and Deployments

Build a ReplicaSet by hand, observe self-healing, then update its template and end up with Pods running different images. Layer a Deployment on top and confirm the full ownership chain.

Challenge

Kubernetes Workloads: Pods

Build a Pod from scratch, exec into it, try to edit an immutable field, explore all three restart policies, and observe graceful termination.

Challenge

Kubernetes - Dynamic Provisioning with StorageClass

Explore how the DefaultStorageClass admission controller injects storage classes, explicitly name a StorageClass, switch the cluster default, and inspect where local-path stores volumes on the node.

Challenge

Kubernetes - PersistentVolume Static Binding Patterns

Learn the three static PV binding patterns - generic match, label selector, and bidirectional claimRef - then use a no-provisioner StorageClass with WaitForFirstConsumer to pin storage to a specific node.

Challenge

Kubernetes - emptyDir Volumes: Sharing, Lifecycle, and Memory-Backed Storage

Use emptyDir volumes to share data between containers, understand the volume lifecycle across container restarts and pod deletion, and explore memory-backed ephemeral storage.

Challenge

Kubernetes Workloads: Jobs

Run a Job to completion, control retries with backoffLimit, compare restartPolicy Never with OnFailure, run work in parallel, clean up automatically with ttlSecondsAfterFinished, suspend a running Job, and enforce a deadline with activeDeadlineSeconds.