2017-08-31 74 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