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

我正在运行一个具有1个主节点(也是一个节点)的kubernetes集群,以及Azure上的两个节点。 我正在使用Ubuntu与Flannel覆盖networking。 到目前为止,一切运作良好。 我唯一的问题是将服务暴露给互联网。

我正在Azure子网上运行群集。 主机有一个连接到它的具有公共IP的网卡。 这意味着如果我运行一个监听端口80的简单服务器,我可以使用域名访问我的服务器(Azure提供了一个选项来为公有IP提供一个域名)。

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

我的问题是如何将外部IP映射到服务IP? 我知道kubernetes有一个只适用于GCE(我现在不能使用)的设置。 但有没有一些干净的告诉etcd /法兰绒做这个?

如果您使用kubectl expose命令:

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

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