如何将 Kubernetes 服务公开到互联网?
How do I expose Kubernetes service to the internet?
我正在 运行在 Azure 上建立一个 kubernetes 集群,其中有 1 个主节点(也是一个节点)和 2 个节点。我正在使用 Ubuntu 和 Flannel 覆盖网络。到目前为止一切正常。我遇到的唯一问题是将服务暴露在互联网上。
我正在 运行将集群连接到 azure 子网上。主机有一个 NIC 连接到它有一个 public IP。这意味着如果我 运行 一个侦听端口 80 的简单服务器,我可以使用域名访问我的服务器(Azure 提供了一个选项,可以为 public IP 使用域名)。
我还可以通过一些 hack 访问 kubernetes 留言簿前端服务。我所做的是检查主机上的所有侦听端口,并使用 public IP 尝试每个端口。我能够访问 kubernetes 服务并得到响应。根据我的理解,这将直接转到主机上 运行ning 的 pod(这也是一个节点),而不是通过服务 IP(这将在任何 pods).
我的问题是如何将外部 IP 映射到服务 IP?我知道 kubernetes 有一个仅适用于 GCE 的设置(我现在无法使用)。但是有什么巧妙的方法可以告诉 etcd/flannel 这样做吗?
如果使用kubectl expose
命令:
--external-ip="": External IP address to set for the service. The service can be accessed by this IP in addition to its generated service IP.
或者,如果您从 json
或 yaml
文件创建,请使用 spec/externalIPs
数组。
我正在 运行在 Azure 上建立一个 kubernetes 集群,其中有 1 个主节点(也是一个节点)和 2 个节点。我正在使用 Ubuntu 和 Flannel 覆盖网络。到目前为止一切正常。我遇到的唯一问题是将服务暴露在互联网上。
我正在 运行将集群连接到 azure 子网上。主机有一个 NIC 连接到它有一个 public IP。这意味着如果我 运行 一个侦听端口 80 的简单服务器,我可以使用域名访问我的服务器(Azure 提供了一个选项,可以为 public IP 使用域名)。
我还可以通过一些 hack 访问 kubernetes 留言簿前端服务。我所做的是检查主机上的所有侦听端口,并使用 public IP 尝试每个端口。我能够访问 kubernetes 服务并得到响应。根据我的理解,这将直接转到主机上 运行ning 的 pod(这也是一个节点),而不是通过服务 IP(这将在任何 pods).
我的问题是如何将外部 IP 映射到服务 IP?我知道 kubernetes 有一个仅适用于 GCE 的设置(我现在无法使用)。但是有什么巧妙的方法可以告诉 etcd/flannel 这样做吗?
如果使用kubectl expose
命令:
--external-ip="": External IP address to set for the service. The service can be accessed by this IP in addition to its generated service IP.
或者,如果您从 json
或 yaml
文件创建,请使用 spec/externalIPs
数组。