我在Google Cloud Platform Kubernetes公共集群中有一个节点。当我从我的应用程序向外部网站发出HTTP请求时,该网站中的nginx显示一些与我的kubernetes集群的IP地址不同的IP地址。我不知道那个IP地址是从哪里来的。我没有在GCP中使用NAT。
在给出答案之前,我将添加一些官方术语来阐明GKE网络;
让我们看一下一些GKE网络术语:
Kubernetes网络模型严重依赖于IP地址。服务、pod、容器和节点使用IP地址和端口进行通信。Kubernetes提供不同类型的负载平衡,将流量引导到正确的pod。本主题后面将更详细地描述所有这些机制。阅读时请牢记以下条款:
ClusterIP:分配给服务的IP地址。在其他文档中,它可能被称为"集群ip"。此地址在服务的生命周期内是稳定的,如本主题中的服务部分所述。
荚IP:分配给给定Pod的IP地址。正如本主题的pod部分所讨论的那样,这是短暂的。
节点IP:分配给给定节点的IP地址。
此外,你可以看看你的服务文档,这可能会给你更多的见解。
并且支持您获得节点IP的事实- GKE使用IP伪装:
IP伪装是一种用于执行多对一IP地址转换的网络地址转换(NAT)形式,它允许多个客户端使用单个IP地址访问目的地址。GKE集群使用IP伪装,以便集群外的目的地只接收来自节点IP地址的数据包,而不是来自Pod IP地址的数据包。