我在 Azure 上运行一个带有 1 个主节点(也是一个节点)和 2 个节点的 kubernetes 集群。我正在将 Ubuntu 与 Flannel 覆盖网络一起使用。到目前为止,一切都运行良好。我唯一的问题是将服务暴露在互联网上。
我在 azure 子网上运行集群。主节点有一个 NIC 连接到它,它有一个公共 IP。这意味着如果我运行一个侦听端口 80 的简单服务器,我可以使用域名访问我的服务器(Azure 提供了为公共 IP 提供域名的选项)。
我还可以通过一些 hack 访问 kubernetes 留言簿前端服务。我所做的是检查主机上的所有侦听端口,并使用公共 IP 尝试每个端口。我能够访问 kubernetes 服务并得到响应。根据我的理解,这是直接进入在主节点(也是一个节点)上运行的 pod,而不是通过服务 IP(这将在任何 pod 之间进行负载平衡)。
我的问题是如何将外部 IP 映射到服务 IP?我知道 kubernetes 有一个仅适用于 GCE 的设置(我现在无法使用)。但是有没有一些巧妙的方法可以告诉 etcd/flannel 这样做?