ClusterIPnode
使用集群内的私有ip —— 这是默认值。git
NodePortgithub
除了使用cluster ip外,也将service的port映射到每一个node的一个指定内部port上,映射的每一个node的内部port都同样。segmentfault
LoadBalancer负载均衡
使用一个ClusterIP & NodePort,可是会向cloud provider申请映射到service自己的负载均衡。ide
ExternalNameui
经过CNAME将service与externalName的值(好比:foo.bar.example.com)映射起来. 要求kube-dns的版本为1.7或以上.spa
ClusterIP
clusterIP主要在每一个node节点使用iptables,将发向clusterIP对应端口的数据,转发到kube-proxy中。而后kube-proxy本身内部实现有负载均衡的方法,并能够查询到这个service下对应pod的地址和端口,进而把数据转发给对应的pod的地址和端口。blog
NodePort
nodePort的原理在于在node上开了一个端口,将向该端口的流量导入到kube-proxy,而后由kube-proxy进一步导给对应的pod。dns
LoadBalancer
LoadBalancer跟nodePort实际上是同一种方式。参见这里的说明。区别在于LoadBalancer比nodePort多了一步,就是能够调用cloud provider去建立LB来向节点导流。