在同一Kubernetes集群中从一个Pod调用Rest API到另一个Pod

时间:2019-08-08 23:32:45

标签: spring-boot docker kubernetes

在我的k8s集群中,我有两个Pod podA和podB。两者都在同一个k8s集群中。 Pod B上的微服务是Spring Boot Rest API。容器A上的微服务在application.yaml中具有容器B的ip和端口。现在,每次重新创建podB时,ip更改都会迫使我们更改podA的application.yml中的ip。请提出一个更好的方法。

我的限制是:我无法更改podA的代码。

2 个答案:

答案 0 :(得分:4)

Service将为访问Pod提供一致的DNS名称。除非您有特定的理由(自定义负载平衡是我能想到的一个理由),否则应用程序绝对不应直接处理Pod。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

您将拥有一个一致的DNS名称,以访问与selector相匹配的所有Pod:

my-service.default.svc.cluster.local

答案 1 :(得分:1)

这就是service的目的。接受postgres服务:

kind: Service
apiVersion: v1
metadata:
  name: postgres-service
spec:
  type: ClusterIP
  selector:
    app: postgres
  ports:
    - protocol: TCP
      port: 5432
      targetPort: 5432

您可以在其他Pod中使用postgres-service而不是引用Pod的IP地址。您还具有k8s也为您执行一些负载平衡的优势。