容器内获取客户端源IP 访问验证 以工作负载为nginx为例: 进入负载详情,查看pod日志,打开自动刷新; 本地请求访问工作负载,比如 查看pod日志,从nginx access.log可以看到请求记录,下面124.127.58.即为本机ip地址,可获取客户端真实ip 192.168.0.17 [08/Apr/2024:06:30:14 +0000] "GET / HTTP/1.1" 304 0 "" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" "124.127.58." 节点端口(NodePort)SVC 当选择服务类型为“节点端口”,即NodePort类型SVC,有以下两种获取客户端源IP方式: 1. 配置SVC外部流量策略,即Service的spec.externalTrafficPolicy,配置为Local。 该方式下外部请求就只会被代理到本地 endpoints 而不会被转发到其它节点,这样就保留了原来的IP 地址。 2. 该模式下客户端只能访问pod所在的node节点,无法使用其他node节点访问服务。 3. 配置SVC外部流量策略仍为Cluster,创建SVC之后,需要在负载均衡器中手动创建监听器及后端主机组,后端主机组配置为容器节点及端口。 注意 cubecni不支持外部流量策略为Local模式 说明 该模式下客户端只能访问pod所在的node节点,无法使用其他node节点访问服务 方式一:外部流量策略为Local 创建服务时,选择类型为“节点端口”,外部流量策略为Local: 创建完成后,通过 access.log可以看到请求记录,下面192.168.0.6即为内网ip地址,可获取客户端真实ip: 192.168.0.6 [08/Apr/2024:07:31:25 +0000] "GET / HTTP/1.1" 200 615 "" "curl/7.79.1" ""