【问题标题】:Exposing a local kubernetes cluster running on a VM via the host VMs IP [closed]通过主机VM IP暴露在VM上运行的本地kubernetes集群[关闭]
【发布时间】: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


    【解决方案1】:

    我已经解决了这个问题,它与我所做的无关。

    通过查看流量,我可以看到连接失败的原因是:

    HTTP 15020: SOCKET ERROR: self signed certificate Error: self signed certificate
        at TLSSocket.onConnectSecure (node:_tls_wrap:1530:34)
        at TLSSocket.emit (node:events:394:28)
        at TLSSocket._finishInit (node:_tls_wrap:944:8)
        at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:725:12)
    

    我通过设置解决了这个问题:

    rejectUnauthorized: false
    

    在socket.io中

    请关闭,因为我已经自己解决了。

    谢谢, 马克斯·萨金特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多