K8S>>Service
資料
K8S >>Ingress
資料
Ingress VS Service
- 物理層
- 數據鏈路層
- 網絡層
- 傳輸層
- 會話層
- 表示層
- 應用層
Ingress是一種用于暴露HTTP和HTTPS路由的資源,它提供了七層(應用層)的負載均衡功能。Ingress可以根據主機名、路徑等規則將外部請求轉發到集群內部的Service。Ingress需要配合Ingress Controller使用,
Service定義了一種抽象,它將一組Pod邏輯分組,并提供一種訪問這些Pod的策略。Service通常用于實現微服務架構中的負載均衡和服務發現。位于傳輸層 只能到IP層
kube-proxy
kube-proxy 支持 3 種工作模式
1. userSpace
這個模式比較穩定,但是效率比較低!在 userSpace 模式下,kube-proxy 會為每一個 Service 創建一個監聽端口,當有請求發往Cluster IP 的時候,會被 Iptables 規則重定向到 kube-proxy 監聽的端口上,kube-proxy 會根據 LB 算法選擇一個 Pod 提供服務并建立起連接。
這個模式下,kube-proxy 充當的角色是一個 四層負責均衡器,由于 kube-proxy 運行在 userSpace 模式下,在進行轉發處理的時候會增加內核和用戶空間之間的數據拷貝,因此效率比較低。
2. iptables
在 iptables 模式下,kube-proxy 會為 Service 后端的每個 pod 都創建對應的 iptable 規則,直接將發往 Cluster IP 的請求重定向到一個 pod IP 上。該模式下 kube-proxy 不承擔四層負載均衡器的角色,只負責創建 iptables 的規則。該模式的有點便是較 userspace 模式來說效率更高,但是不能提供靈活的 LB 策略。當后端Pod不可用的時候也無法進行重試。
3. ipvs
這種模式與 iptables 模式形似,kube-proxy 會監控pod的變化并且創建相應的 ipvs 規則。但是 ipvs 規則相對于 iptables 來說轉發效率更高,而且支持更多的 LB 算法。