Free — no signup required

Introduction: The "Flat Network" Challenge

2 min read

The Problem Kubernetes Solves

Before Kubernetes, connecting two applications running on different physical servers required careful coordination: firewall rules, port mappings, and Network Address Translation (NAT). NAT is the process where a router rewrites the source or destination IP address of a packet — useful for the public internet, but a headache when you just want two internal services to talk directly.

Kubernetes promises something fundamentally different: a flat network.

Every Pod gets its own unique IP address. Any Pod can talk to any other Pod in the cluster directly using that IP address, even if they live on completely different physical machines across a data center. No NAT required. No port mapping. No firewall exceptions between Pods. From each Pod's perspective, every other Pod is directly reachable.

The Four Networking Problems Kubernetes Solves

Kubernetes networking is built around four distinct communication challenges, each solved differently:

  1. Container-to-Container within the same Pod — handled via localhost (containers in a Pod share a network namespace).
  2. Pod-to-Pod across nodes — handled by the CNI plugin.
  3. Pod-to-Service — handled by kube-proxy and DNS (CoreDNS).
  4. External-to-Service — handled by Ingress controllers or LoadBalancer Services.

Understanding which layer is broken is the first step in debugging any Kubernetes networking issue. When things go wrong in Kubernetes, it is almost always a networking problem — and knowing which of these four layers is failing cuts your debugging time in half.

This is one of 18 chapters

Every chapter is free — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

Sign up free