问题
在 TKE 中配置 Pod 直接绑定弹性公网 IP 使用 EIP 功能后, 可以通过绑定的 EIP 直接访问 Pod , 但是从 Pod 中访问节点外的网络时还是走的节点网络,而不是绑定的 EIP (网络)。
原因
这是因为从 Pod 访问节点外网络(以公网为例)时, Pod 网段出节点会被做 SNAT 策略导致, 相关说明参考:容器访问节点外服务时是否做 SNAT 配置。
解决办法
需要配置下访问不做SNAT 就行了,有两种配置策略:
- 配置不做 SNAT 要访问的目的网段, 参考配置:容器访问节点外服务时是否做 SNAT 配置。
- 配置不做 SNAT的 源 IP(同样是修改 ip-masq-agent 配置)。
配置条件:当前集群 ip-masq-agent 镜像版本 v2.6.1 及以上
增加不做 SNAT 的源网段(以 10.0.0.0/16 为例)配置:
代码语言:javascript复制kubectl edit cm -n kube-system ip-masq-agent-config
将下列数据添加到 data.config 中:
代码语言:javascript复制NonMasqueradeSrcCIDRs":["10.0.0.0/16"]
如图所示:
等待 "ResyncInterval" 时间周期(默认1分钟)后测试看看配置是否生效。