我在Google云端平台上使用Kubernetes Engine。我有一个pod在Docker临时容器中运行进程。我还有一个负载均衡器服务,可以让我从外面访问pod。
在pod中运行的进程需要知道其外部IP地址是什么。我怎么能得到这个?
在使用Kubernetes Engine之前,我使用的是Compute Engine,可以通过以下方式找到外部IP地址:
curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
我可以使用哪些内部工具可供我的流程使用吗?或者我是否需要进程来调用可以镜像回IP地址的外部站点?
答案 0 :(得分:2)
每个Pod(除非配置为不这样做)在/var/run/secrets/kubernetes.io/servicetoken/token
as described here中具有有效的kubernetes凭据,因此答案是使用kubernetes API来询问Pod前面的Service
其status:loadBalancer:ingress:ip:
as described here我完全有理由相信GKE会及时了解负载均衡器的任何变化。 kubernetes API总是(?)位于https://kubernetes
(通常情况下,或https://kubernetes.default.svc.cluster.local
是其全名),因此Pod应该只需要很少的配置进行查询。
该响应的星号是必须将服务的名称提供给位于其前面的服务的Pod,因为(在大多数情况下)Pod无法知道如何很多服务都指向它。