【问题标题】:Read IP of k8s pod from application running inside it从运行在其中的应用程序读取 k8s pod 的 IP
【发布时间】:2018-10-24 06:16:35
【问题描述】:

我有两个 k8s pod 正在运行。每个 pod 内部都有一个容器。我的应用程序将在每个容器内运行。我想从 Pod1 中的应用直接 HTTP 调用到 Pod2 中的应用。

假设我在集群之外有某种持久性存储。所以我的逻辑看起来像这样。

App in Pod1 -> get Pod1 IP address -> save to external storage

App in Pod2 -> read Pod1 IP address from storage -> complete HTTP call to App1 in Pod1

如何从我的应用程序中获取此 IP 地址。我正在使用 Java(Play 框架)。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    您可以通过在您的 Pod 清单中添加如下内容来将 Pod IP(或 Pod 描述符的任何其他属性)暴露给 Pod 的环境变量:

    env:
    - name: MY_POD_IP
      valueFrom:
        fieldRef:
          fieldPath: status.podIP
    

    话虽如此,Yonah 的回答可能正是你真正需要的。服务发现是 Kubernetes 的一等公民。

    【讨论】:

    • 谢谢,但是如果 pod 在不同的集群中怎么办?服务也可以用于此目的吗?
    • 如果你想访问另一个集群中的服务,你有不同的选择。如果可以通过内部网络访问该集群,则可以使用基于 DNS 的 IP 解析并使用诸如 myservice.mynamespace.svc.myremotecluster.example.com 之类的主机名访问远程服务,这显然需要适当的 DNS 设置。如果无法通过内部网络访问远程集群,则需要在外部 IP 上公开它(使用服务中的 LoadBalancer 设置),然后只需查询该 IP。请注意通过 Internet 通话的安全方面。
    【解决方案2】:

    在 kubernetes 中有一个称为服务的概念,专门为您尝试使用的目的而构建。例如,部署在 Kubernetes 中的前端和后端可以使用服务名称相互访问。在您的情况下,为两个 pod 创建服务,您应该能够从任何其他 pod 访问您的 pod。 除了这个好处,服务还有更多的好处,应该被使用。 https://kubernetes.io/docs/concepts/services-networking/service/ 祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多