As a container orchestrator, Kubernetes provides a networking model that consists of a set of requirements that any given networking solution must fulfill. The most important requirements are as follows:
- Pods running on a node must be able to communicate with all Pods on all nodes (including the Pod's node) without NAT and explicit port mapping.
- All Kubernetes components running on a node, for example kubelet or system daemons/services, must be able to communicate with all Pods on that node.
These requirements enforce a flat, NAT-less network model, which is one of the core Kubernetes concepts that make it so powerful, scalable, and easy to use. From this perspective, Pods are similar to VMs running in a Hyper-V cluster—each Pod has its own IP address assigned (IP-per-Pod model), and containers within a Pod share the same network...