【发布时间】:2023-02-05 14:49:56
【问题描述】:
我为使用随机端口服务的每个微服务开发微服务(使用 nodejs),为此,我需要一个发现服务。
问题是 kubernetes 有服务发现解决方案还是我应该自己实现?
【问题讨论】:
-
引用您所依赖的 kubernetes 文档的 URL。
标签: node.js docker kubernetes microservices
我为使用随机端口服务的每个微服务开发微服务(使用 nodejs),为此,我需要一个发现服务。
问题是 kubernetes 有服务发现解决方案还是我应该自己实现?
【问题讨论】:
标签: node.js docker kubernetes microservices
简短的回答是肯定的,Kubernetes 确实有一个服务发现解决方案。 Kubernetes 有一个内置的 DNS 服务器,可用于发现服务。例如,如果您在 my-namespace 命名空间中有一个名为 my-service 的服务,您可以使用 http://my-service.my-namespace.svc.cluster.local 从任何 pod 访问它。
长话短说,Kubernetes 提供了两种不同类型的服务发现:
基于 DNS 的服务发现是 Kubernetes 中最常见的服务发现机制。它基于属于 Kubernetes 集群的内置 DNS 服务器。 Kubernetes 自动为每个服务创建 DNS 记录。 DNS 记录以服务名称和服务名称空间命名。 DNS 记录存储在集群 DNS 服务器中,这是一种特殊类型的 DNS 服务器,是 Kubernetes 集群的一部分。集群 DNS 服务器自动配置为集群中所有 pod 的默认 DNS 服务器。如果您在 my-namespace 命名空间中有一个名为 my-service 的服务,您可以使用 http://my-service.my-namespace.svc.cluster.local 从任何 pod 访问它。
基于环境变量的服务发现是一种更高级的服务发现机制。它基于 Kubernetes 自动为每个服务创建环境变量这一事实。环境变量以服务名称和服务名称空间命名。环境变量存储在容器的环境中。如果您在 my-namespace 命名空间中有一个名为 my-service 的服务,您可以使用 MY_SERVICE_MY_NAMESPACE_SERVICE_HOST 和 MY_SERVICE_MY_NAMESPACE_SERVICE_PORT 环境变量从任何 pod 访问它。
基于 DNS 的服务发现是 Kubernetes 中最常见的服务发现机制。它非常易于使用,并且受到所有 Kubernetes 客户端库的支持。基于环境变量的服务发现是一种更高级的服务发现机制。它更加灵活,并且受到所有 Kubernetes 客户端库的支持。基于环境变量的服务发现的主要缺点是它需要客户端应用程序了解 Kubernetes API。
【讨论】: