根据云端NAT的GCP文档,
常规(非私有)GKE集群为每个节点分配一个外部IP地址,因此这些集群无法使用Cloud NAT从节点的主接口发送数据包。如果Pod发送的源IP地址设置为pod IP,则Pod仍然可以使用Cloud NAT
问题:在将数据包发送到某些外部服务时,如何配置pod以将源IP设置为pod IP?
Cloud NAT用于允许仅具有内部IP地址的GCE实例或GKE集群访问Internet上的公共资源。如果您想使用Cloud NAT,则需要遵循guidelines from the public docs,或者您可以使用build your own NAT gateway using a GCE Instance,它不需要您使用私有群集。
穆罕默德的答案大多是准确的,它是GCP支持的方法。虽然有一个补充来解决引用的文本。
GKE uses ip masquerade and SNAT在节点之间或集群外部路由流量时。只要pod正在路由到Masq范围内的流量,就会发生SNAT,并且pod使用节点的外部(或内部)IP地址。您需要通过扩展非masq范围来包括所有IP(0.0.0.0/0)来禁用SNAT。您可以使用ip-masq-agent执行此操作,如果不存在,则可以安装。