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

时间:2016-02-08 17:10:14

标签: azure docker kubernetes

我正在运行一个kubernetes集群,其中包含1个主服务器(也是一个节点)和Azure上的2个节点。我正在使用Ubuntu与Flannel覆盖网络。到目前为止,一切都运作良好。我唯一的问题是将服务暴露给互联网。

我在天蓝色的子网上运行群集。主设备连接了一个具有公共IP的NIC。这意味着如果我运行一个侦听端口80的简单服务器,我可以使用域名访问我的服务器(Azure提供了一个公共IP域名的选项)。

我也可以通过一些黑客到达kubernetes留言簿前端服务。我所做的是检查主服务器上的所有监听端口,并尝试使用公共IP的每个端口。我能够点击kubernetes服务并获得回复。根据我的理解,这直接转到主服务器上运行的pod(也是一个节点),而不是通过服务IP(在任何pod上都有负载均衡)。

我的问题是如何将外部IP映射到服务IP?我知道kubernetes的设置仅适用于GCE(我现在无法使用)。但有没有一些巧妙的方式告诉etcd / flannel这样做?

1 个答案:

答案 0 :(得分:4)

如果您使用kubectl expose命令:

  

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

或者,如果您使用jsonyaml文件进行创建,请使用spec/externalIPs数组。