Kubernetes是否有服务发现解决方案,或者我需要自己实施?

q35jwt9p  于 2023-02-07  发布在  Kubernetes
关注(0)|答案(1)|浏览(194)

我为每个使用随机端口的微服务开发微服务(使用nodejs),为此,我需要一个发现服务。
问题是Kubernetes是否有服务发现解决方案,或者我应该自己实现这个解决方案?

icnyk63a

icnyk63a1#

简单来说,Kubernetes确实有服务发现解决方案。Kubernetes有一个内置的DNS服务器,可用于发现服务。例如,如果您在my-namespace名称空间中有一个名为my-service的服务,您可以使用http://my-service.my-namespace.svc.cluster.local从任何pod访问它。
详细的答案是Kubernetes提供两种不同类型的服务发现:
1.基于DNS的服务发现
1.基于环境变量的服务发现
∮ ∮ ∮ ∮
基于DNS的服务发现是Kubernetes中最常见的服务发现机制,它基于Kubernetes集群中的内置DNS服务器,Kubernetes会自动为每个服务创建DNS记录,DNS记录以服务名称和服务命名空间命名,并存储在集群DNS服务器中。这是属于Kubernetes群集的一种特殊类型的DNS服务器。群集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_HOSTMY_SERVICE_MY_NAMESPACE_SERVICE_PORT环境变量从任何pod访问它。

基于DNS的服务发现与基于环境变量的服务发现

基于DNS的服务发现是Kubernetes中最常用的服务发现机制,使用非常简单,所有Kubernetes客户端库都支持;基于环境变量的服务发现是一种更高级的服务发现机制,更加灵活,所有Kubernetes客户端库都支持。环境变量的主要缺点-基于服务发现的一个优点是,它要求客户端应用程序知道Kubernetes API。

相关问题