在实际的工作环境中,可能包含多个服务,我们就需要服务发现。在下图中,对问题更详细的说明。
在上图中,有Web API服务需要访问其它三个服务–payments,shipping和ordering. 在API的代码中,我们只是使用服务的名字和端口号,比如http://payments:3000.
但是在kubernetes中,payments应用服务可以通过一个ReplicaSet中的pods来代替,但是由于分布式系统的特性,导致pods部署在哪一个节点之上,存在的不确定性。就需要使用到下面的解决方案。
Service提供了一个稳定的端点给ReplicaSets或Deployments,如下所示:
在上图中,中间的位置有一个kubernetes service. 它提供了可靠的集群范围的IP,也叫做虚拟IP(VIP,就像端口一样,在整个群集中是唯一的。 具体的是在service specification中定义的。 选择器是基于标签的。 每个kubernetes的对象可以有一个或者多个标签。