一、Service
二、Endpoint
Endpoint记录一个 Service 对应一组 Pod 的访问地址,一个 Service 只有一个 Endpoint资源。Endpoint资源会去监测Pod 集合,只要服务中的某个 Pod 发生变更,Endpoint 就会进行同步更新。
三、Service、Endpoint和 Pod的对应关系
一个service对象可以对应多个pod,一个pod也可以对应多个service,那么怎么表示这种多对多的关系,在数据库中通常使用中间表来描述这种多对多的关系,Endpoint对象也是一样的作用。
四、EndpointSlice
当集群规模很大的时候,比如一个service对应了几千个pod,那么endpoint要维护这个信息,endpoint对象也是比较大的。一旦有pod的状态发生了变更,endpoint 就会进行同步更新,endpoint的变更会被推送到所有节点,会占用比较大的网络带宽。
kubenetes为了解决这个问题,在v1.21版本引入了EndpointSlice对象。
EndpointSlice将维护的pod信息分成了几个切片,如果pod状态发生变更,也只是影响pod所在的那个EndpointSlice切片。