【问题标题】:How do I expose Kubernetes service to the internet?如何将 Kubernetes 服务公开到互联网?
【发布时间】:2016-05-18 10:48:34
【问题描述】:

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

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

我还可以通过一些 hack 访问 kubernetes 留言簿前端服务。我所做的是检查主服务器上的所有监听端口,并使用公共 IP 尝试每个端口。我能够访问 kubernetes 服务并获得响应。根据我的理解,这将直接转到在主节点(也是一个节点)上运行的 pod,而不是通过服务 IP(这将在任何 pod 之间进行负载平衡)。

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

【问题讨论】:

    标签: azure docker kubernetes


    【解决方案1】:

    如果您使用kubectl expose 命令:

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

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

    【讨论】:

    • 它监听什么端口?与服务 IP 相同的端口?
    • @RaghavBoorgapally 是的,外部 IP 将侦听 clusterIP 已经侦听的相同端口。
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多