Endpoints标识一个Service对应所有Pod副本的访问地址,Endpoints Controller负责生成和维护所有Endpoints对象的控制器。
Endpoints Controller负责监听Service和对应的Pod副本的变化,如果监测到Service被删除,则删除该Service同名的Endpoints对象。如果监测到新的Service被删除或被修改,则根据Servic信息获取相关的Pod列表,然后创建或者更新Service对应的Endppints对象。如果监测到Pod事件,则更新它对应的Service的Endpoints对象(增加、删除或者修改对应的Endpoint条目)。
Endpoints对象在哪里被使用?每个Node上的kube-proxy进程,kube-proxy进程获取每个Service的Endpoints,实现Service的负载均衡功能。
Service Controller的作用,其实是Kubernetes集群和外部的云平台之间的一个接口控制器。如果该Service是一个LoadBalancer类型的Service(externalLoadBalancers=true),则Service Controller确保该Service对应的LoadBalancer实例在外部的云平台被相应的创建、删除以及更新路由转发(根据Endpoints的条目)。