Brains


Algorithm、Machine Learning、Search、cloud computing
on kubernetes, service

[译]Kubernetes之Service

在Kubernetes中Pod是终将消失的,从创建到销毁的过程中,它们是无法自动重启的。而ReplicationController可以用来动态的创建和销毁Pod(比如说在进行滚动升级的时候,可以进行扩展和收缩)。每一个Pod都得到一个属于自己的IP,但这些IP不能一直有效存在,因为这些IP随着Pod的销毁而变得没有了意义。那么这就导致了一个问题,如果一些Pods为集群内部的其他Pods(我们称它们为前端)提供服务,那么这些前端怎么发现、追踪这些后端集合中的服务呢?Service就是做这个事情的。 Service是一个抽象概念,它定义了一些逻辑上的Pods集合,并且定义了访问这些Pods集合的策略,也被称作为micro-service。Service通常通过Label标签选择器来对应相应的Pods集合(也有一些没有标签选择器的,请看下文介绍)。 举个例子,考虑一个运行的镜像,它在集群中有三个副本,这些副本是可以相互替代的,前端并不关心它现在与哪个后端服务打交道。实际上Pods组成的后端服务集合可以是变化的,比如说通过scale进行副本增加或者副本减少,但我们的前端不应该关心或者跟踪后端服务的变化,Service这一层抽象可以做到这一点。 对于常规的应用,Kubernetes提供了一个简单的Endpoints API,当Service中的Pods集合变化时,Endpoints也会相应的做出变化。对于其他情况的应用,Kubernetes为Service提供了一个基于虚拟IP的网桥,这个网桥可以把前端的请求重定向到后端Pods中。 定义一个Service 在Kubernetes中,一个Service是一个REST对象,就像Pod一样。像所有的REST对象一样,将一个Service的定义发送给apiserver就可以创建一个相应的实例。例如,假设你有一系列的Pods都暴露9376端口,并且标签为"app=
Read More