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來向節點導流。