【问题标题】:Grabbing a pod's IP address from another pod从另一个 pod 获取一个 pod 的 IP 地址
【发布时间】:2019-09-10 01:37:54
【问题描述】:

我有一个部署 pod,它需要获取另一个部署 pod 的 IP 地址并将其用作环境变量。我能找到的最接近的是how-to-know-a-pods-own-ip-address-from-inside-a-container-in-the-pod

我知道我可以使用环境变量获取服务的 IP 地址:$<SVC NAME>_SERVICE_HOST 注入在该服务之后创建的 pod 中。在创建第一个部署 pod 后,是否有类似的方法可以将部署 pod 的 IP 地址注入另一个部署 pod?

【问题讨论】:

    标签: kubernetes environment-variables ip inject


    【解决方案1】:

    您应该考虑通过ClusterIP 服务公开您的目标 pod,并使用该服务的集群 DNS FQDN 访问该 pod。使用这种方法,您不必担心目标 pod 的确切 IP 地址,因为 Kube 代理会为您处理所有 DNS 和路由。然后,您只需要知道 ClusterIP 服务端点是什么,并通过它访问您的目标 pod。

    官方文档包含一个很棒的case study 和一个interactive tutorial 关于这个主题。

    希望这会有所帮助!

    【讨论】:

    • 很遗憾,POD 中的应用程序需要 IP 地址。端点不起作用。如果就这么简单,我们就可以将服务的带标签的 DNS 名称与应用到部署 pod 的标签一起使用。
    • 在这种情况下,您最好使用服务注册表(例如 Consul)并让您的 pod 注册它们的元数据,这些元数据对其他 pod 可见。您也可以使用 Kubernetes 的建议方法来查询您的 pod IP。
    【解决方案2】:

    目前无法在 DNS 或环境变量中找到另一个 pod 的 IP。为此,您需要查询 Kubernetes API。您可以创建具有 pod 和部署列表权限的 serviceaccount,然后使用 Kubernetes API 库或 kubectl。

    【讨论】:

    • 听起来有点费力,但我会研究一下。另一种解决方案是将整个 192.168.xx 命名空间列表作为“允许的主机”来访问相关的 pod(应用程序需要一个允许的主机 IP 地址列表......注意:我们正在尝试禁用这个要求,这将避免整个混乱]。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2020-07-27
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多