2017-08-31 83 views
0

我有多个部署在kubernetes中的容器实例。如何从kubernetes中的容器获取公共IP

容器中的应用程序需要来自Pod /节点的公共IP。

从部署清单,我试着用下面

  • status.podIP
  • spec.nodeName

但他们两人回到我的节点的私有IP地址,而然后是公共IP。

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

谢谢

回答

0

公共IP可能无法通过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"; 
} 

,然后使用主办这次

$ curl <publicipofnginx>/ip 

nginx的公共IP调用这个端点这会给的公众机器卷曲呼叫。

0

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