我有多个部署在kubernetes中的容器实例。如何从kubernetes中的容器获取公共IP
容器中的应用程序需要来自Pod /节点的公共IP。
从部署清单,我试着用下面
- status.podIP
- spec.nodeName
但他们两人回到我的节点的私有IP地址,而然后是公共IP。
有人可以帮忙解释status.podIP值的来源吗?它来自节点清单吗?或从VM/docker配置? 关于如何将公共IP地址加入我的容器的任何建议?
谢谢
我有多个部署在kubernetes中的容器实例。如何从kubernetes中的容器获取公共IP
容器中的应用程序需要来自Pod /节点的公共IP。
从部署清单,我试着用下面
但他们两人回到我的节点的私有IP地址,而然后是公共IP。
有人可以帮忙解释status.podIP值的来源吗?它来自节点清单吗?或从VM/docker配置? 关于如何将公共IP地址加入我的容器的任何建议?
谢谢
公共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调用这个端点这会给的公众机器卷曲呼叫。
Kubernetes通过“负载均衡”服务暴露外部/公共IP地址(和端口)。在大多数情况下,容器不需要知道这个外部IP地址;他们只需要监听配置的端口。该服务将确保发送到外部/公共IP的流量路由到您的(希望复制的w/ReplicaSet)容器。请查看以下Kubernetes Service Example。