While Docker runs containers, Kubernetes orchestrates them. It is the "Operating System" for the cloud. K8s handles scaling, self-healing (restarting crashed containers), and load balancing across a cluster of servers.
If your .NET process hangs or runs out of memory, K8s detects it via a Liveness Probe and physically kills/restarts the container for you. This allows for "Zero-Downtime" 2 AM recoveries.
Q: "Why can't we just give a Pod a static IP address?"
Architect Answer: "Pods in Kubernetes are **Ephemeral** (Temp). They are born and they die constantly during scaling or updates. Every time a Pod restarts, it gets a brand new IP address. If your API tried to talk to 'Pod-123' via IP, it would break within minutes. This is why we use **Services**. A Service has a static IP that never changes; it acts as a permanent proxy that routes traffic to whichever Pods happen to be alive at that moment."