如何查看Kubernetes中ClusterIP类型Pod对外HTTP请求的出口IPv4地址?
查询K8s Pod对外HTTP请求的源IP方法
针对GKE环境下ClusterIP类型Pod对外请求的源IP查询需求,以下是几种直接可行的方法:
1. 在Pod内发起测试请求
直接登录目标Pod(Pod A),执行curl命令访问能返回请求源IP的服务,最快得到结果:
# 简单IP查询服务 curl http://ifconfig.me # 或通过Google API错误响应获取源IP(无需有效令牌) curl https://www.googleapis.com/oauth2/v1/userinfo?alt=json -H "Authorization: Bearer invalid-token"
第二个请求会返回包含源IP的错误信息,直接对应Google侧看到的请求来源。
2. 查看Pod所在节点的公网IP
如果集群未配置Cloud NAT,Pod对外请求默认会使用所在节点的公网出口IP。用kubectl快速查看:
kubectl get nodes -o wide
输出中EXTERNAL-IP列的地址就是节点的公网IP,也就是Pod对外请求的源IP。
3. 检查Cloud NAT配置(若集群启用NAT)
如果集群配置了GCP的Cloud NAT,所有Pod对外请求的源IP会来自NAT配置的公网IP池。通过gcloud命令查看:
gcloud compute routers nats describe <NAT_NAME> --region <REGION>
在输出的sourceNatIps字段中可以找到对应的公网IP列表。
4. 查看Pod网络命名空间的路由规则
若使用自定义网络策略,可进入Pod的网络命名空间确认路由和SNAT配置:
# 获取Pod的容器PID POD_PID=$(kubectl get pod <POD_NAME> -o jsonpath='{.status.containerStatuses[0].containerID}' | cut -d/ -f3) # 进入Pod网络命名空间查看路由 nsenter -t $POD_PID -n ip route
默认网关对应的节点IP通常就是出口源IP(无Cloud NAT时)。
内容的提问来源于stack exchange,提问作者Cod3n0d3
相关产品推荐
相关产品推荐

