如何在 Kubernetes 中修改 Pod 的源 IP?

How to modify source IP for a Pod in Kubernetes?

要将源 IP 更改为 100.101.102.103 以将传出数据发送到特定目的地,我通过执行 iptables CLI 工具在 Kubernetes Pod 的容器内修改了 iptables

iptables -t nat -A POSTROUTING --destination 100.200.150.50/32 -j SNAT --to-source 100.101.102.103

但它会阻止我向该目的地传出数据,并且似乎数据被捕获在容器内,例如当我通过 Curl 发送一个简单的请求并通过 Tcpdump 工具查看它时。

主要问题可能是:如何修改 Kubernetes 中 Pod 的源 IP 以用于集群外的目的地?

P.S。我使用 NET_ADMINNET_RAW 权限以特权模式部署了我的 pod。

I modified iptables inside the container of a Kubernetes Pod

我建议不要这样做,因为它可能会破坏 kubernetes 的 CNI and/or kube-proxy。相反,请考虑使用 kubernetes egress 在到集群外部目的地的传出数据包中使用众所周知的源 IP 地址。

从 k8s 集群到集群外目的地的出口数据包将节点的 IP 作为源 IP。

https://kubernetes.io/docs/tutorials/services/source-ip/ 表示来自 k8s 的出口数据包使用节点 IP 进行源 NAT:

Source NAT: replacing the source IP on a packet, usually with a node’s IP

以下可用于从 k8s 集群发送出口数据包: