【问题标题】:How do I find out the external IP of a Load Balancer service?如何找出负载均衡器服务的外部 IP?
【发布时间】:2018-06-25 18:45:07
【问题描述】:

我在 Google Cloud Platform 上使用 Kubernetes Engine。我有一个在 Docker 暂存容器中运行进程的 pod。我还有一个负载均衡器服务,可以让我从外部访问 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 地址的外部站点的过程?

【问题讨论】:

    标签: kubernetes google-cloud-platform google-compute-engine google-kubernetes-engine


    【解决方案1】:

    每个 Pod(除非配置为不这样做)在 /var/run/secrets/kubernetes.io/serviceaccount/token as described here 中都有有效的 kubernetes 凭据,因此答案是使用 kubernetes API 向 Pod 前面的 Service 询问其 @ 987654327@as described here,我完全有理由相信 GKE 会及时更新负载均衡器的任何更改。 kubernetes API 总是(?)位于https://kubernetes(这通常足够了,或者https://kubernetes.default.svc.cluster.local 是它的全名),所以Pod 执行查找所需的配置应该很少。

    该响应的星号是必须将服务的名称提供给坐在它前面的服务的 Pod,因为(在大多数情况下)Pod 无法知道如何许多服务都指向它。

    【讨论】:

    • 感谢您的信息。当我使用 curl 从 pod 内访问 kubernetes/api/v1/namespaces/default/services/my-load-balancer/… 并应用我从已安装的令牌文件中获取的“授权:承载 [我的令牌]”标头时。我收到一个禁止错误,说明未知用户“system:serviceaccount:default:default”。有什么想法吗?
    • 这是我实际使用的 curl 命令:curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" https://kubernetes/api/v1/namespaces/default/services/
    • 我认为 Matthew 的回答很好,但实际上我很难让 Kubernetes 建议的方法起作用。因此,我将此问题标记为已回答,并针对我的问题stackoverflow.com/questions/48311683/… 提出了另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2020-06-02
    • 2020-01-30
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多