我正在运行一个kubernetes集群,其中包含1个主服务器(也是一个节点)和Azure上的2个节点。我正在使用Ubuntu与Flannel覆盖网络。到目前为止,一切都运作良好。我唯一的问题是将服务暴露给互联网。
我在天蓝色的子网上运行群集。主设备连接了一个具有公共IP的NIC。这意味着如果我运行一个侦听端口80的简单服务器,我可以使用域名访问我的服务器(Azure提供了一个公共IP域名的选项)。
我也可以通过一些黑客到达kubernetes留言簿前端服务。我所做的是检查主服务器上的所有监听端口,并尝试使用公共IP的每个端口。我能够点击kubernetes服务并获得回复。根据我的理解,这直接转到主服务器上运行的pod(也是一个节点),而不是通过服务IP(在任何pod上都有负载均衡)。
我的问题是如何将外部IP映射到服务IP?我知道kubernetes的设置仅适用于GCE(我现在无法使用)。但有没有一些巧妙的方式告诉etcd / flannel这样做?
答案 0 :(得分:4)
如果您使用kubectl expose
命令:
- external-ip =“”:为服务设置的外部IP地址。除了生成的服务IP之外,该IP还可以访问该服务。
或者,如果您使用json
或yaml
文件进行创建,请使用spec/externalIPs
数组。