Blog
Thoughts on engineering, design, and building great products.
Workload Types: StatefulSet, DaemonSet, Job and CronJob
Deployment fits stateless apps, but not everything is stateless. StatefulSet is for apps that need a stable identity (databases), DaemonSet for things that must run on every node (log agents), Job/CronJob for run-then-done tasks. This article runs each type for real and shows when to use which.
Resource Requests/Limits and Autoscaling (HPA)
Every pod has to state how much CPU/RAM it wants — that's how the scheduler places pods correctly and the cluster doesn't fall over because one pod hogs everything. Once declared, the HorizontalPodAutoscaler raises and lowers replica count with load. This article generates real load and watches HPA scale from 1 up to many pods.
Health Checks: Liveness and Readiness Probes
How does Kubernetes know a 'Running' pod is actually healthy and ready to take traffic? Through probes. A liveness probe restarts a hung container; a readiness probe keeps traffic away from a pod that isn't ready. This article demos both with deliberately broken pods and watches K8s react.
Ingress: Routing HTTP Into the Cluster
NodePort gives each service a weird port — no good when you have many services. Ingress is a single HTTP entry point, routing by domain and path to the right service, with TLS. This article: enable minikube's ingress addon, write an Ingress rule, and test Host-based routing.
Storage: Volumes, PV, PVC and StorageClass
Data inside a pod evaporates with the pod — no good for a database or user files. Kubernetes separates the 'storage request' (PVC) from the 'real disk' (PV), with StorageClass for dynamic provisioning. This article proves data outlives the pod with a delete-then-recreate experiment.
ConfigMap and Secret: Separating Configuration from the Image
The same image must run in dev, staging, production — meaning configuration cannot be baked into the image. ConfigMap holds ordinary configuration, Secret holds sensitive data. This article: creating and injecting them into a pod via environment variables and files, with an important warning about 'a Secret is just base64'.
Namespaces, Labels and Selectors
Two foundational organizing mechanisms in Kubernetes: namespaces split the cluster into separate compartments, while labels/selectors are how you tag and select resources — the very 'glue' that Deployment and Service use to find pods. This article makes both clear with real examples.