Docker Kubernetes Service 網絡服務代理模式詳解


Docker Kubernetes  Service 網絡服務代理模式詳解

Service

  • service是實現kubernetes網絡通信的一個服務
  • 主要功能:負載均衡、網絡規則分布到具體pod

注:kubernetes deployment服務分配服務器負載均衡VIP只能NODE節點單獨訪問,這里需要外網用戶可以放問到容器內,這里就需要用到service。


網絡代理模式

  • kube-proxy v1.0中只支持userspace模式,在v1.1中,添加了iptables代理,在v1.2開始iptables是默認的。
  • service為pod提供了一個統一的訪問入口已userspace模式iptables模式,進行代理轉發。
  • userspace與iptables主要是實現對IP的轉發。

userspace模式
1、NODE節點的客戶端要訪問service的代理IP+端口。
2、IP與端口是由kube-proxy維護的,它創建了IPtables一個規則。
3、請求經過IPtables后,再轉發給kube-proxy端口。
4、kube-proxy關聯后端的backend pod,將請求根據標簽代理到指定的Backenpod。

注:Backend Pod:訪問節點IP的指定端口,轉發到后端的pod。kubectl get ep 可查看Backend Pod IP。
注:效率比較低,需要經過一次轉發。
注:kube-proxy是使用的用戶空間處理。

 

iptables模式
1、NODE節點客戶端直接訪問serviceIP,Linux根據Iptables協議棧規則策略匹配。
2、serviceIP根據標簽直接訪問Backendpod。

注:直接使用iptables 使用內核空間處理 速度快。


服務代理類型

ClusterIP

  分配一個內部集群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:主要通過雲平台提供封裝好的接口來做為負載均衡器進行代理轉發。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM