如何将 Kubernetes 服务公开到互联网?

Rag*_*lly 4 azure docker kubernetes

我在 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 这样做?

Joa*_*ais 5

如果使用kubectl expose命令:

--external-ip="": 为服务设置的外部 IP 地址。除了生成的服务IP之外,该服务还可以通过该IP访问。

或者,如果您从一个jsonyaml文件创建,请使用该spec/externalIPs数组。

  • 它监听哪个端口?与服务 IP 相同的端口? (2认同)
  • @RaghavBoorgapally 是的,外部 IP 将侦听 clusterIP 已经侦听的相同端口。 (2认同)