<p>I am trying to understand Kubernetes and how it works under the hood.  As I understand it each pod gets its own IP address.  What I am not sure about is what kind of IP address that is.  </p>

<p>Is it something that the network admins at my company need to pass out?  Or is an internal kind of IP address that is not addressable on the full network?</p>

<p>I have read about network overlays (like Project Calico) and I assume they play a role in this, but I can't seem to find a page that explains the connection.  (I think my question is too remedial for the internet.)</p>

<p><strong>Is the IP address of a Pod a full IP address on my network (just like a Virtual Machine would have)?</strong></p>

<h2>Kubernetes clusters</h2>
<blockquote>
<p>Is the IP address of a Pod a full IP address on my network (just like a Virtual Machine would have)?</p>
</blockquote>
<p>The thing with Kubernetes is that it is not a <em>service</em> like e.g. a Virtual Machine, but a <strong>cluster</strong> that has it's own networking functionality and management, including <strong>IP address allocation</strong> and <strong>network routing</strong>.</p>
<p>Your nodes may be virtual or physical machines, but they are registered in the NodeController, e.g. for health check and most commonly for IP address management.</p>
<blockquote>
<p>The node controller is a Kubernetes master component which manages various aspects of nodes.</p>
<p>The node controller has multiple roles in a node’s life. The first is assigning a CIDR block to the node when it is registered (if CIDR assignment is turned on).</p>
</blockquote>
<p><a href="https://kubernetes.io/docs/concepts/architecture/nodes/" rel="nofollow noreferrer">Cluster Architecture - Nodes</a></p>
<h2>IP address management</h2>
<p>Kubernetes Networking depends on the Container Network Interface (<a href="https://github.com/containernetworking/cni/blob/master/SPEC.md" rel="nofollow noreferrer">CNI</a>) plugin your cluster is using.</p>
<blockquote>
<p>A CNI plugin is responsible for ... It should then assign the IP to the interface and setup the routes consistent with the IP Address Management section by invoking appropriate IPAM plugin.</p>
</blockquote>
<p>It is common that each node is assigned an CIDR range of IP-addresses that the nodes then assign to pods that is scheduled on the node.</p>
<p><a href="https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview" rel="nofollow noreferrer">GKE network overview</a> describes it well on how it work on GKE.</p>
<blockquote>
<p>Each node has an IP address assigned from the cluster's Virtual Private Cloud (VPC) network.</p>
<p>Each node has a pool of IP addresses that GKE assigns Pods running on that node (a /24 CIDR block by default).</p>
<p>Each Pod has a single IP address assigned from the Pod CIDR range of its node. This IP address is shared by all containers running within the Pod, and connects them to other Pods running in the cluster.</p>
<p>Each Service has an IP address, called the ClusterIP, assigned from the cluster's VPC network.</p>
</blockquote>
