spring-boot - 在同一个 kubernetes 集群中,从一个 pod 调用一个 rest api 到另一个 pod
问题描述
在我的 k8s 集群中,我有两个 pod podA 和 podB。两者都在同一个 k8s 集群中。pod B 上的微服务是一个 spring boot rest api。pod A 上的微服务在其 application.yaml 中有 pod B 的 ip 和端口。现在每次 podB 重新创建时,ip 更改都会迫使我们更改 podA 的 application.yml 中的 ip。请提出更好的方法。
我的限制是:我无法更改 podA 的代码。
解决方案
Service将提供一致的 DNS 名称来访问 Pod。
除非您有特定的理由,否则应用程序永远不应该直接寻址 Pod(自定义负载平衡是我能想到的,或者 Pod 具有身份的 StatefulSets)。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
然后,您将拥有一个一致的 DNS 名称来访问任何匹配的 Pod selector
:
my-service.default.svc.cluster.local
推荐阅读
- android - 如何从非上下文类安全地调用意图服务?
- c# - Dynamics CRM 中的 CalculatePrice 消息
- webpack - 如何使用 babel 和 webpack 进行动态代码拆分?
- ios - Firebase DebugView iOS 设备名称
- google-apps-script - 如何使用 Google Script 检查安全设置?
- amazon-web-services - aws cli 命令更改默认 sing in 方法
- postgresql - (postgreSQL 9.5)使用 make_date 奇数插入带有日期列的表
- reactiveui - 用 ReactiveUI Observable 包装 IEnumerable
- google-bigquery - 在 BigQuery SQL 中,加入和过滤第二个表的最有效方法通常是什么?
- python - Python has_key 的算法复杂度