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