我为每个使用随机端口的微服务开发微服务(使用nodejs),为此,我需要一个发现服务。问题是Kubernetes是否有服务发现解决方案,或者我应该自己实现这个解决方案?
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访问它。
my-namespace
my-service
http://my-service.my-namespace.svc.cluster.local
基于环境变量的服务发现是一种更高级的服务发现机制,它基于Kubernetes自动为每个服务创建环境变量,环境变量以服务名称和服务命名空间命名,环境变量存储在容器的环境中,如果在my-namespace命名空间中有一个名为my-service的服务,您可以使用MY_SERVICE_MY_NAMESPACE_SERVICE_HOST和MY_SERVICE_MY_NAMESPACE_SERVICE_PORT环境变量从任何pod访问它。
MY_SERVICE_MY_NAMESPACE_SERVICE_HOST
MY_SERVICE_MY_NAMESPACE_SERVICE_PORT
基于DNS的服务发现是Kubernetes中最常用的服务发现机制,使用非常简单,所有Kubernetes客户端库都支持;基于环境变量的服务发现是一种更高级的服务发现机制,更加灵活,所有Kubernetes客户端库都支持。环境变量的主要缺点-基于服务发现的一个优点是,它要求客户端应用程序知道Kubernetes API。
1条答案
按热度按时间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_HOST
和MY_SERVICE_MY_NAMESPACE_SERVICE_PORT
环境变量从任何pod访问它。基于DNS的服务发现与基于环境变量的服务发现
基于DNS的服务发现是Kubernetes中最常用的服务发现机制,使用非常简单,所有Kubernetes客户端库都支持;基于环境变量的服务发现是一种更高级的服务发现机制,更加灵活,所有Kubernetes客户端库都支持。环境变量的主要缺点-基于服务发现的一个优点是,它要求客户端应用程序知道Kubernetes API。