K8S LB機制
每個服務在被創建的時候會被賦予一個集羣IP(cluster IP)和端口,因此,流量如何通過服務訪問到真正的Pod呢?
LB機制分三種模式
1.用戶空間代理模式(User space proxy mode)
此模式下,kube-proxy 監視Kubernete Master的Service對象和Endpoint對象的增刪行爲,併爲每個服務在worker節點開啓一個隨機端口。任何流入這個代理端口的流量都會路由到其中一個Pod。
在用戶空間需要安裝一個iptables來捕獲到目的地是此服務的流量(通過clusterIP和端口),並將這些流量路由到kube-proxy爲服務開啓的代理端口。
- iptables代理模式(iptables proxy mode)
此模式下,kube-proxy監聽Service & Endpoint對象的增刪行爲。每個服務安裝一個iptables規則,捕獲服務流量(通過clusterIP和端口)並路由到真正的Pod。使用iptables處理流量路由使用更小的系統開銷,因爲它使用Linux netfilter不需要用戶態和內核態的切換。
如果kube-proxy運行在這個模式下,第一次選擇的Pod掛掉,那麼它不會去重試。和用戶空間代理模式不同,可以使用就緒探針檢測Pod是否可用。