1. service
用来为一组相同功能的pod提供一个统一的访问入口,生成一个虚拟ip,用来负载均衡到后边的多个pod。
2、endpoints
表示后端pod节点,包含了后端pod的IP与Port, 这个不是创建完pod以后自动生成的,而是在创建service之后自动生成或是手动创建的,至于自动生成或是手动创建的endpoint是不是正确的对应了pod的ip与port,这就跟pod没关系了。
3、kube-proxy
通过获取service与endpoints还有namespace的信息,来自动生成负载均衡的规则。
注意了,service与endpoint还有namespace只是提供信息, 实际工作的是kube-proxy, 它通过生成iptables规则或是ipvs规则来实现负载均衡。来个例子:
上面TCP和UDP后面的ip都是services的虚拟ip, 作为负载均衡的入口ip。
TCP和UDP下面的都是endpoints。
这里一共4个ipvs的入口规则。services有两个。
总结:
做个比喻就是, service的ip是桥头,endpoints的ip是桥尾, pod是过桥以后的地点(也可以说endpoints是pod的大门), kube-proxy是造桥的。 。