kubernetes内部直接与外部通信?

kubernetes internal to external communication directly?

我想访问 pod 中的一些外部 Saas api 端点。我使用法兰绒作为 kubernetes 网络。但是当我尝试在 pod 中 ping 外部 IP 时,数据包将在没有伪装的情况下发送。所以ping不通

我发现了这个: https://docs.openshift.org/latest/dev_guide/integrating_external_services.html 在没有选择器的情况下创建服务并附加相关端点后,我可以在 pod 中获取外部服务。

我还可以在节点的 10.254.0.0/16 上添加 iptables 伪装,以启用直接访问外部端点,如下所示:

 iptables -t nat -A -A POSTROUTING -s 10.254.61.0/24 ! -d 10.254.0.0/16 -j MASQUERADE 

但是我们不能直接访问外部 Saas 端点吗?

kubernetes 或 flannel(或其他网络插件?)上是否有任何配置可以直接允许内部到外部通信?

谢谢

如果您告诉 [1],kubelet 将确保创建 iptables 后路由规则,但我怀疑您是 运行 --configure-cbr0=false 因为您想允许 flannel 设置容器网络。相信你可以告诉flannel给你定规则:

flanneld --help
...
-ip-masq setup IP masquerade rule for traffic destined outside of overlay network

[1] https://github.com/kubernetes/kubernetes/blob/b9cfab87e33ea649bdd13a1bd243c502d76e5d22/pkg/kubelet/container_bridge.go#L122