我的服务(spring boot java应用程序)在带有3个副本(pods)的K8S群集中运行。我的用例要求我动态部署应用程序上下文。 我需要知道通过服务发现在3个Pod中的哪个上部署了哪些上下文。有没有办法在K8S服务发现中注册服务的自定义元数据,就像我们在Eureka中使用eureka.instance.metadata-map一样?
答案 0 :(得分:0)
就Kubernetes而言,我们有部署和服务。
部署是ReplicaSet的状态描述,它创建Pod。 Pod由一个或多个容器组成。
服务是一个抽象,它定义了一组逻辑Pod,以及一个访问它们的策略。
在Eureka中,您可以动态设置Pod的配置并在运行时重新配置它们,这与Kubernetes设计不匹配。
在Kubernetes中,当您使用1个部署3个副本时,所有3个Pod应该是相同的。它没有选项或功能可以将服务下的单独Pod的任何元数据导出到不同的组中,因为包含具有相同标签的Pod的ReplicaSet本身就是一个组。
因此,更好的想法是使用3个不同的部署,每个部署1个副本,所有部署都具有相同的配置。或者使用一些Springboot的功能,例如,如果要在运行时重新加载应用程序上下文,请使用其服务发现。