NAT 背后的 Kubernetes 网络

NAT 背后的 Kubernetes 网络

我已将此问题发布在 StackOverflow 中,但被重定向到这里,所以我再次询问。我目前正在研究一个用例,其中 NAT 路由器后面的多台机器需要能够充当 Kubernetes 集群中的节点。这带来了一些严重的网络困难,因为节点甚至没有可公开访问的 IP,而不是在同一个本地网络上,并且能够通过 IP 轻松访问其他 pod。我一直在尝试找出使用隧道的解决方案,但我不确定它究竟如何工作。所有 pod 都需要能够通信,所以我是否必须在每个 pod 之间以及从每个节点到 api 服务器之间设置隧道?我们集群中充当节点的所有机器都将通过 WebRTC 连接进行连接,因此理论上数据也可以通过 WebRTC 传递。其他人提到使用 VPN,所以如果有人知道如何做到这一点的更多细节,那也很棒。我希望以前有人以某种方式做到了这一点。

答案1

以下是通过 OpenVPN 网络构建 Kubernetes 集群的一个很好的示例:

该示例使用了tunopevpn 模式,但我认为'点击模式更合适,因为它创建了第 2 层覆盖网络并允许在节点的 vpn 接口上使用任何 IPv4 子网。

在这两种情况下,至少需要一台具有公共 IP 的机器作为 NAT 后面节点的 VPN 服务器。

您可能还需要:

  • 指定--apiserver-advertise-address期间kubeadm init
  • 在 Flannel 插件 YAML 文件中设置正确的接口(以避免默认路由接口上的集群流量),
  • --node-name将节点加入集群时手动指定节点名称( ) kubeadm join

相关内容