【发布时间】:2021-08-05 16:47:05
【问题描述】:
我有一个在 ubuntu 虚拟机上运行的 kubernetes 集群,我在 documentation 之后创建了这个集群,用于启用 kubernetes 入口功能。
这个集群内部运行着几个服务,其中有 3 个我想对外公开。其中之一是基于 REST 的服务,其他使用 websocket 连接。
在主机虚拟机上,在按照文档和一些摆弄之后,我可以通过 curl'ing localhost 来访问这些服务。
我现在想通过特定接口 (ens160) 公开这些服务,以便我可以通过其他团队正在构建的一些客户端自动化来访问这些服务。
我的第一次尝试是使用 IP 表将进入 80/443 的流量映射到 127.0.0.1,这适用于 REST 服务。
sudo iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 443 -j DNAT --to-destination 127.0.0.1:443
sudo iptables -A FORWARD -p tcp -d 127.0.0.1 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 80 -j DNAT --to-destination 127.0.0.1:80
sudo iptables -A FORWARD -p tcp -d 127.0.0.1 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
但是 websocket 连接没有建立。
对我来说,这种方法似乎是一种“脆弱”的方法,我想知道是否有更好的方法将这个 kubernetes 集群暴露给我的“公司网络”,然后对传入的数据包执行 DNAT。
我是不是走错路了?
谢谢, 马克斯·萨金特
【问题讨论】:
标签: kubernetes networking websocket iptables kind