Pods were dying for no reason, and nobody could explain why. The cluster logs told one story. The network told another. That’s when Kubernetes Network Policies stopped being optional. They became the only way to regain control.
Kubernetes Network Policies give you fine-grained control over how pods communicate. They let you define which pods can talk to each other and what external traffic is allowed in or out. Without them, every pod can reach every other pod. That default is dangerous. It makes lateral movement trivial during a breach, and it lets rogue services flood your system.
You declare a NetworkPolicy in YAML. It matches pods with labels and enforces rules on ingress, egress, or both. Underneath, Kubernetes depends on the Container Network Interface (CNI) plugin to enforce these rules. Not all CNIs support Network Policies. Calico, Cilium, and Weave Net are common choices with full enforcement.
A solid SRE workflow includes auditing these policies. Start by listing all namespaces. Check which ones have no Network Policies defined. Every namespace without them is an open field. The safest default is to deny all traffic and explicitly allow what’s needed. That reverses the trust model from “all open” to “least privilege.”