【Kubernetes】Kube Proxy 如何幫助 Pod 之間通信?Kube-Proxy 實踐案例

kube-proxy 主要通過管理網絡規則和流量轉發來幫助 Pod 之間進行通信,具體方式如下:

1. 維護 Service 相關的網絡規則

  • kube-proxy 監聽 API Server,當 Service 或 Endpoints 發生變化時,動態更新網絡規則。
  • 確保流量能正確地從 Service 發送到對應的 Pod。

2. 支持三種模式進行流量轉發

  • iptables 模式(默認)

    • kube-proxy 通過 iptables 規則攔截訪問 Service 的流量,并將其 NAT 轉發到后端 Pod。
    • 適用于大部分場景,性能較好,但規則過多時管理會變復雜。
  • ipvs 模式

    • 使用 Linux 內核 IPVS(IP Virtual Server)機制進行流量轉發,性能更優,支持更多的負載均衡算法。
    • 適合大規模集群,但需要內核支持 ipvs 模塊。
  • userspace 模式(已廢棄)

    • kube-proxy 進程直接處理流量,再轉發到 Pod,性能較差,不推薦使用。

3. 提供 Service 訪問能力

  • 通過 ClusterIP 訪問:
    • Pod 訪問 Service 時,kube-proxy 負責將流量轉發到后端 Pod。
  • 通過 NodePort 訪問:
    • kube-proxy 監聽 Node 上的端口,并將外部流量轉發到 Service。
  • 通過 LoadBalancer 訪問:
    • 結合云廠商的負載均衡服務,將流量分發到集群內的 Node。

4. 實現 Pod 之間的跨節點通信

  • kube-proxy 結合 CNI(如 Flannel、Calico)實現不同 Node 上 Pod 之間的通信。
  • 確保訪問 Service 時,即使后端 Pod 在不同的 Node 上,也能正確轉發流量。

企業級案例:電商平臺的流量轉發(Kube-Proxy 實踐)

場景描述

某電商公司使用 Kubernetes 部署了一個高并發的購物平臺,包含多個微服務,如:

  • frontend(前端服務,用戶訪問入口)
  • cart-service(購物車服務)
  • order-service(訂單服務)
  • payment-service(支付服務)

這些服務需要通過 kube-proxy 實現流量轉發,確保用戶下單時,各個服務能正確通信。


1. 購物車訪問訂單服務的通信

用戶流程

  1. 用戶在 frontend 添加商品到購物車。
  2. frontend 調用 cart-service,存儲購物信息。
  3. 用戶點擊“下單”,cart-service 需要調用 order-service 處理訂單。

Kubernetes 部署情況

  • cart-serviceorder-service 部署在不同的 Node 上。
  • order-service 通過 Kubernetes Service 暴露,ClusterIP 為 10.96.0.10
  • kube-proxy 負責管理 cart-service 訪問 order-service 的流量。

Kube-Proxy 作用

  • kube-proxy 監聽 order-service 的 Endpoints,確定后端可用的 Pod。
  • 使用 iptablesipvs 規則,讓 cart-service 訪問 10.96.0.10 時,流量自動轉發到 order-service 的 Pod。

2. 訂單服務調用支付服務(跨節點流量)

用戶流程

  1. order-service 處理訂單后,需要調用 payment-service 進行支付。
  2. payment-service 可能運行在不同的 Node 上。
  3. 需要保證流量能跨節點轉發,防止單點失敗。

Kube-Proxy 作用

  • 維護 payment-service 的 Service 規則,讓 order-service 訪問 10.96.0.20(ClusterIP)時,自動轉發到某個 payment-service Pod。
  • 如果 payment-service 的某個 Pod 故障,kube-proxy 會自動調整流量,轉發到健康的 Pod,保證支付功能正常。

3. 用戶外部訪問購物平臺(NodePort 模式)

場景

  • 用戶需要訪問 frontend,但 frontend 只能通過 Service 暴露。
  • 由于 frontend 需要被外網訪問,我們使用 NodePort Service。

Kube-Proxy 作用

  • kube-proxy 在每個 Node 上開啟一個高位端口(如 30080)。
  • 當用戶訪問 NodeIP:30080 時,kube-proxy 自動將流量轉發到 frontend Pod。
  • 如果 frontend Pod 不在該 Node 上,kube-proxy 會通過 iptablesipvs 規則,轉發流量到正確的 Node。

總結

需求Kube-Proxy 解決方案
購物車服務訪問訂單服務kube-proxy 通過 iptables/ipvs 規則,管理 ClusterIP 轉發
訂單服務調用支付服務kube-proxy 確保跨節點 Pod 之間的流量轉發
用戶訪問前端服務kube-proxy 通過 NodePort 讓用戶外部訪問

https://github.com/0voice

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72721.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

平衡樹的模擬實現

一.平衡樹的介紹 平衡樹是以二叉樹結構為基礎,同時引入了平衡因子進行了限制,以保證樹的結點之間的高度差小于等于1,在插入刪除結點時通過旋轉的方法保持高度相對平衡,從而提高搜索等效率。 二.代碼實現 1.平衡樹結點 平衡樹結…

JavaScript基礎-獲取元素

在Web開發中,使用JavaScript動態地訪問和操作網頁上的元素是一項基本技能。通過獲取頁面上的特定元素,我們可以對其進行各種操作,比如修改內容、樣式或屬性等。本文將詳細介紹幾種獲取DOM元素的方法,并探討它們的特點及適用場景。…

為什么要用(:deep、::v-deep、>>>)樣式穿透

在 Vue.js 中,當你使用像 Element UI 這樣的 UI 庫時,它們的樣式通常是全局的,即使你在組件中使用了 scoped 樣式(為什么要用scoped),仍然可能需要對這些全局樣式進行修改。 為了實現這一點,樣…

MySQL中的事務隔離級別有哪些

MySQL中的事務隔離級別 一、事務并發問題二、MySQL 事務隔離級別1. READ UNCOMMITTED(讀未提交)2. READ COMMITTED(讀已提交)3. REPEATABLE READ(可重復讀)(MySQL 默認級別)4. SERIA…

Python----計算機視覺處理(Opencv:圖像鏡像旋轉)

一、圖像鏡像旋轉 圖像的旋轉是圍繞一個特定點進行的,而圖像的鏡像旋轉則是圍繞坐標軸進行的。圖像鏡像旋轉,也可 以叫做圖像翻轉,分為水平翻轉、垂直翻轉、水平垂直翻轉三種。 通俗的理解為,當以圖片的中垂線為x軸和y軸時&#x…

hibernate 自動生成數據庫表和java類 字段順序不一致 這導致添加數據庫數據時 異常

hibernate 自動生成的數據庫表和java類 字段順序不一致 這導致該書寫方式添加數據庫數據時 異常 User user new User( null, username, email, phone, passwordEncoder.encode(password) ); return userRepository.save(user);Hibernate 默認不會保證數據庫表字段的順序與 Ja…

python|結構的模式匹配match|同步迭代

在 Python 中,模式匹配(Pattern Matching) 是一種強大的功能,用于根據數據的結構或內容進行匹配和處理。Python 3.10 引入了 match 語句,使得模式匹配更加直觀和靈活。模式匹配可以用于處理復雜的數據結構,…

博客圖床 VsCode + PigGo + 阿里云OSS

關鍵字 寫博客,圖床,VsCode,PigGo,阿里云OSS 背景環境 我想把我在本地寫的markdown文檔直接搬到CSDN上和博客園上,但是圖片上傳遇到了問題。我需要手動到不同平臺上傳文件,非常耗費時間和經歷。 為了解決…

路由器安全研究:D-Link DIR-823G v1.02 B05 復現與利用思路

前言 D-Link DIR-823G v1.02 B05存在命令注入漏洞,攻擊者可以通過POST的方式往 /HNAP1發送精心構造的請求,執行任意的操作系統命令。 漏洞分析 binwalk提取固件,成功獲取到固件。 現在我們已經進入到應用里了,那么我們在進行分析…

c++ 類和對象 —— 下 【復習總結】

1. 深入構造函數 1.1 函數體賦值 前文我們提到,創建對象時,編譯器會調用構造函數給成員變量賦值。但這并不能稱為對對象中成員變量的初始化。因為初始化只能初始化一次,但構造函數體內可以多次賦值。構造函數體中語句只能稱為賦初值 那么&…

【量化科普】Volatility,波動率

【量化科普】Volatility,波動率 🚀量化軟件開通 🚀量化實戰教程 在金融市場中,波動率(Volatility)是衡量資產價格變動幅度的一個重要指標。它反映了資產價格的穩定性和風險水平。高波動率意味著資產價格…

PCIe(Peripheral Component Interconnect Express)詳解

一、PCIe的定義與核心特性 PCIe(外設組件互連高速總線)是一種 高速串行點對點通信協議,用于連接計算機內部的高性能外設。它取代了傳統的PCI、PCI-X和AGP總線,憑借其高帶寬、低延遲和可擴展性,成為現代計算機系統的核…

idea 編譯打包nacos2.0.3源碼,生成可執行jar 包常見問題

目錄 問題1 問題2 問題3 問題4 簡單記錄一下nacos2.0.3,編譯打包的步驟,首先下載源碼,免積分下載: nacos源碼: https://download.csdn.net/download/fyihdg/90461118 protoc 安裝包 https://download.csdn.net…

通過 TTL 識別操作系統的原理詳解

TTL 的工作原理 TTL(Time to Live,生存時間)是網絡中用于控制數據包生命周期的一個關鍵參數。它通過限制數據包在網絡中可以經過的最大路由跳數(或最大轉發時間),確保數據包不會在網絡中無休止地轉發。TTL…

總結Solidity 的數據類型

數據類型 在 Solidity 中,類型系統非常豐富,主要分為 值類型(Value Types)和 引用類型(Reference Types)。此外,還有一些特殊類型和全局變量。 一.值類型 布爾型(bool&#xff09…

Android audio(8)-native音頻服務的啟動與協作(audiopolicyservice和audioflinger)

音頻策略的構建 1、概述 2、AudiopolicyService 2.1 任務 2.2 啟動流程 2.2.1 加載audio_policy.conf(xml)配置文件 2.2.2 初始化各種音頻流對應的音量調節點 2.2.3 加載audio policy硬件抽象庫 2.2.4設置輸出設備 ps:audiopatch流程簡介 2.2.5打開輸出設…

DeepSeek:從入門到精通

DeepSeek是什么? DeepSeek是一家專注通用人工智能(AGI)的中國科技公司,主攻大模型研發與應 用。DeepSeek-R1是其開源的推理模型,擅長處理復雜任務且可免費商用。 Deepseek可以做什么? 直接面向用戶或者支持…

【一起來學kubernetes】17、Configmap使用詳解

前言概述核心特性創建 ConfigMap使用 ConfigMap1. **環境變量**2. **Volume 掛載**3. **命令行參數** 更新與熱重載Docker容器中Java服務使用Configmap**一、通過環境變量注入****步驟說明****示例配置** **二、通過 Volume 掛載配置文件****步驟說明****示例配置** **三、動態…

【八股文】從瀏覽器輸入一個url到服務器的流程

1.url解析與DNS解析 瀏覽器解析用戶輸入的URL,提取協議(HTTP\HTTPS)、域名、端口及路徑等信息 瀏覽器首先檢查本地DNS緩存和系統DNS緩存,若未命中,查詢本地hosts文件 最后遞歸查詢向本地DNS服務器發起請求&#xff…

網絡空間安全(34)安全防御體系

前言 安全防御體系是一個多層次、多維度的系統,旨在保護組織或個人的信息資產免受各種網絡攻擊和威脅。 一、技術層面 網絡邊界防御 防火墻:部署在網絡邊界,通過設定規則允許或阻止特定流量的進出,保護內部網絡不受外部攻擊。入侵…