如何从kubernetes中的容器获取公共IP

时间:2017-08-31 20:03:11

标签: docker kubernetes

我在kubernetes中部署了多个容器实例。

容器中的应用程序需要来自pod / node的公共IP。

从部署清单中,我尝试使用以下内容,

  • status.podIP
  • spec.nodeName

但是它们都返回我的节点的私有IP地址而不是公共IP。

有人可以帮助解释status.podIP值的来源吗?它来自节点清单吗?或者从VM / docker配置? 关于如何将公共IP地址放入我的容器的任何建议?

由于

2 个答案:

答案 0 :(得分:1)

Kubernetes可能无法提供公共知识产权。但您可以使用外部服务来查询IP。

$ curl ipinfo.io/ip

是一种可能的方式。但他们有限速。您可能还会找到其他选项。下一个选项是在知道机器上使用以下配置

设置Nginx服务器
location = /ip {
    add_header Last-Modified $date_gmt;
    add_header Cache-Control 'private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
    if_modified_since off;
    expires off;
    etag off;

    default_type text/plain;
    return 200 "$remote_addr";
}

然后使用托管此

的nginx的公共IP调用此端点
$ curl <publicipofnginx>/ip

这将使机器的公众进行卷曲调用。

答案 1 :(得分:0)

Kubernetes通过&#34;负载均衡&#34;公开外部/公共IP地址(和端口)。服务。在大多数情况下,容器不需要知道这个外部IP地址;他们只需要监听配置的端口。该服务将确保发送到外部/公共IP的流量路由到您的(希望复制的w / ReplicaSet)容器。请查看以下Kubernetes Service Example