Docker Kubernetes Service 網絡服務代理模式詳解前端
Servicenode
注:kubernetes deployment服務分配服務器負載均衡VIP只能NODE節點單獨訪問,這裏須要外網用戶能夠放問到容器內,這裏就須要用到service。nginx
網絡代理模式後端
userspace模式
一、NODE節點的客戶端要訪問service的代理IP+端口。
二、IP與端口是由kube-proxy維護的,它建立了IPtables一個規則。
三、請求通過IPtables後,再轉發給kube-proxy端口。
四、kube-proxy關聯後端的backend pod,將請求根據標籤代理到指定的Backenpod。服務器
注:Backend Pod:訪問節點IP的指定端口,轉發到後端的pod。kubectl get ep 可查看Backend Pod IP。
注:效率比較低,須要通過一次轉發。
注:kube-proxy是使用的用戶空間處理。網絡
iptables模式
一、NODE節點客戶端直接訪問serviceIP,Linux根據Iptables協議棧規則策略匹配。
二、serviceIP根據標籤直接訪問Backendpod。負載均衡
注:直接使用iptables 使用內核空間處理 速度快。spa
服務代理類型代理
ClusterIPblog
分配一個內部集羣IP地址,只能在集羣內部訪問(同Namespace內的Pod),默認ServiceType。
NodePort
分配一個內部集羣IP地址,並在每一個節點上啓用一個端口來暴露服務,能夠在集羣外部訪問。
訪問地址:<NodeIP>:<NodePort>
LoadBalancer
分配一個內部集羣IP地址,並在每一個節點上啓用一個端口來暴露服務。
除此以外,Kubernetes會請求底層雲平臺上的負載均衡器,將每一個Node([NodeIP]:[NodePort])做爲後端添加進去。
ExternalName
經過CNAME將Service與externalName的值映射。要求kube-dns的版本爲v1.7+。
拓撲圖
nodeport:前端對用戶代理使用nginx/LVS/HAProxy來作爲負載均衡使用,代理每一個NODE節點IP端口去訪問pod。
LoadBalancer:主要經過雲平臺提供封裝好的接口來作爲負載均衡器進行代理轉發。