看圖
FtYgB4t7FeeweXw8nK_kR2zAC5HA.png
四種類型
- ClusterIP
使用集群內(nèi)的私有ip —— 這是默認(rèn)值。
- NodePort
除了使用cluster ip外,也將service的port映射到每個node的一個指定內(nèi)部port上哈肖,映射的每個node的內(nèi)部port都一樣临谱。
- LoadBalancer
使用一個ClusterIP & NodePort放棒,但是會向cloud provider申請映射到service本身的負載均衡章蚣。
- ExternalName
通過CNAME將service與externalName的值(比如:foo.bar.example.com)映射起來. 要求kube-dns的版本為1.7或以上.
路由
1983035518-557952c3762ef.png
- ClusterIP
clusterIP主要在每個node節(jié)點使用iptables,將發(fā)向clusterIP對應(yīng)端口的數(shù)據(jù)蜻懦,轉(zhuǎn)發(fā)到kube-proxy中鲸匿。然后kube-proxy自己內(nèi)部實現(xiàn)有負載均衡的方法,并可以查詢到這個service下對應(yīng)pod的地址和端口阻肩,進而把數(shù)據(jù)轉(zhuǎn)發(fā)給對應(yīng)的pod的地址和端口带欢。 - NodePort
nodePort的原理在于在node上開了一個端口,將向該端口的流量導(dǎo)入到kube-proxy烤惊,然后由kube-proxy進一步導(dǎo)給對應(yīng)的pod乔煞。 - LoadBalancer
LoadBalancer跟nodePort其實是同一種方式。參見這里的說明柒室。區(qū)別在于LoadBalancer比nodePort多了一步渡贾,就是可以調(diào)用cloud provider去創(chuàng)建LB來向節(jié)點導(dǎo)流。