使用Kubernetes Container作为自定义NAT实例吗?

问题描述

GCP以前有一个文档,解释了如何将Google Compute instance用作自定义NAT设备,现在已根据the documentation弃用并删除了它。

基本上,它具有使用sysctliptables命令的命令列表,以便将接收到的某些流量转发到特定的目标IP。

命令如下所示:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination xx.xxx.xxx.xx
iptables -t nat -A POSTROUTING -j MASQUERADE

我有一个正在运行的计算实例,该实例被用作NAT设备,以将某些流量从某些IP转发到特定的目的地。这是在Google Cloud Routes的帮助下完成的。示例:

gcloud compute routes create $EXAMPLE-ROUTE-NAME \
    --network $NETWORK-NAME \
    --destination-range 1.1.1.1 \
    --next-hop-instance $CUSTOM-NAT-INSTANCE-NAME \
    --next-hop-instance-zone $CUSTOM-NAT-INSTANCE-ZONE \
    --tags $TAG-NAME \
    --priority 800

这样,当“ $ {NETWORK-NAME}”中所有带有标签“ $ TAG-NAME”的VM实例尝试向“ 1.1.1.1”发送请求时,此自定义路由会将流量转发到“ $” CUSTOM-NAT-INSTANCE-NAME”,该实例将作为NAT并将流量转发到“ xx.xxx.xxx.xx”。

我了解“ Google Cloud NAT”的概念以及设置它的难度,但是由于某些限制,我们必须使用自定义NAT。

现在我的问题是,我们可以在GKE容器上设置自定义NAT吗?容器内部没有sysctl命令(如预期),并且securityContext.sysctls.name: net.ipv4.ip_forward在GKE中是不允许的。

是否可以将Kubernetes容器用作NAT设备?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)