我有两个k8s pod正在运行。每个吊舱内部都有一个容器。我的应用程序将在每个容器内运行。我想从Pod1中的应用程序直接调用我的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 Framework)。
答案 0 :(得分:3)
您可以将Pod IP(或Pod描述符的任何其他属性)暴露给Pod的环境变量,方法是在Pod中添加如下内容:
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
话虽如此,Yonah的回答很可能是你真正需要的。服务发现是Kubernetes的一等公民。
答案 1 :(得分:1)
在kubernetes中有一个概念,称为专门为您尝试使用的目的而构建的服务。例如,部署在kubernetes中的前端和后端可以使用服务名称相互访问。在您的情况下,为两个pod创建服务,您应该能够从任何其他pod访问您的pod。 除此之外,服务还有许多好处,应该使用。 https://kubernetes.io/docs/concepts/services-networking/service/ 祝好运!