假设我有一个 pod 在 Kubernetes 集群中运行。
现在这个 pod 想要与外部 API 交互。
当 pod 向 API 发出请求时,API“看到”什么 IP 地址?
假设api指的是Google,Google看到的就是你的外网IP。
API 看到的是集群网络的路由器公共地址。
在 Kubernetes 的大多数实现中,集群的节点(以及扩展的 Pod)都位于专用网络内。因此,根据定义,它们拥有无法通过互联网路由的私有 IP 地址。
所以,当他们想要与互联网通信时,必须通过路由器。路由器执行网络地址转换 (NAT),将节点(和 Pod)专用 IP 映射到单个公共 IP 地址,即路由器的地址。
从互联网的角度来看,通信似乎来自路由器的公共IP地址,而不是原始的私有IP地址。
当路由器收到来自互联网的响应时,它使用 NAT 表将响应发送到专用网络内的正确设备。