在我的k8s集群中,我有两个Pod podA和podB。两者都在同一个k8s集群中。 Pod B上的微服务是Spring Boot Rest API。容器A上的微服务在application.yaml中具有容器B的ip和端口。现在,每次重新创建podB时,ip更改都会迫使我们更改podA的application.yml中的ip。请提出一个更好的方法。
我的限制是:我无法更改podA的代码。
答案 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也为您执行一些负载平衡的优势。