Pod 網絡與 CNI 的作用

在 Kubernetes 中,Pod 網絡 是實現容器間通信的核心機制,每個 Pod 擁有獨立的 IP 地址,可直接跨節點通信。CNI(Container Network Interface) 是 Kubernetes 的網絡插件標準,負責為 Pod 分配 IP、配置網絡規則,并確保 Pod 間的連通性。常見的 CNI 插件(如 Calico、Flannel)通過不同技術實現這一目標。


CNI 的核心作用

  1. IP 地址管理(IPAM)

    • 為每個 Pod 分配唯一的 IP 地址,確保集群內無沖突。

  2. 網絡連通性

    • 實現同一節點內的 Pod 通信(通過網橋或虛擬設備)。

    • 實現跨節點 Pod 的通信(通過 Overlay 網絡或路由規則)。

  3. 網絡策略支持

    • 部分插件(如 Calico)支持定義網絡策略(NetworkPolicy),控制 Pod 間的流量。


常見 CNI 插件對比

插件實現原理特點適用場景
FlannelOverlay 網絡(如 VXLAN)或 Host-GW- 簡單易用 - 默認使用 VXLAN 封裝跨節點流量 - 性能中等中小規模集群、快速部署
CalicoBGP 路由 + IPIP 封裝- 高性能(直接路由,避免 Overlay 開銷) - 支持網絡策略 - 復雜度較高大規模集群、需要安全策略的環境
CiliumeBPF 技術- 高性能和可觀測性 - 支持 L7 網絡策略 - 內核要求較高云原生、安全敏感型應用

Pod 間通信原理

1. 同一節點內的 Pod 通信
  • 通信流程

    1. Pod A 發送數據包到 Pod B 的 IP。

    2. 節點上的 CNI 網橋(如 cni0 根據 ARP 表找到 Pod B 的 MAC 地址。

    3. 數據包直接通過網橋轉發到 Pod B 的虛擬網卡(veth pair)。

  • 示意圖

    Pod A (eth0) <--> veth pair <--> cni0 <--> veth pair <--> Pod B (eth0)
2. 跨節點的 Pod 通信

不同 CNI 插件的實現方式:

Flannel(VXLAN 模式)
  • 原理

    1. Pod A 發送數據包到目標 Pod C 的 IP。

    2. 源節點通過 Flannel 的 VXLAN 隧道 封裝數據包,目標地址為 Pod C 所在節點的 IP。

    3. 目標節點解封裝數據包,通過本地網橋轉發到 Pod C。

  • 特點

    • 依賴 Overlay 網絡,適用于不支持 BGP 的網絡環境。

    • 因封裝開銷,性能略低于直接路由方案。

Calico(BGP 路由模式)
  • 原理

    1. 每個節點作為 BGP Speaker,通過 BGP 協議向其他節點宣告本機 Pod 的 IP 段。

    2. Pod A 發送數據包到 Pod C 的 IP,節點根據路由表直接通過物理網絡轉發到目標節點。

    3. 目標節點通過本地網橋將數據包送達 Pod C。

  • 特點

    • 無 Overlay 封裝,性能接近物理網絡。

    • 需要網絡設備支持 BGP 或配置 IPIP 隧道(兼容非 BGP 環境)。


示例:Calico 的跨節點通信(BGP 模式)

  1. 節點路由表(查看節點路由規則):

    ip route show
    # 輸出示例:
    # 10.244.1.0/24 via 192.168.1.102 dev eth0  # 目標節點 IP 為 192.168.1.102
  2. 數據包路徑

    • Pod A(IP 10.244.0.10)→ 節點 A 路由 → 節點 B(IP 192.168.1.102)→ Pod C(IP 10.244.1.10)。


CNI 插件選型建議

  1. Flannel

    • 適合快速部署、無需復雜策略的小型集群。

    • 缺點:缺乏網絡策略支持(需結合其他工具如 Calico)。

  2. Calico

    • 適合中大規模集群,尤其是需要高性能和網絡策略的場景。

    • 缺點:BGP 配置需網絡設備支持,復雜度較高。

  3. Cilium

    • 適合云原生環境,需要 L7 策略和深度可觀測性的場景。


網絡策略(NetworkPolicy)示例

Calico 支持通過 NetworkPolicy 限制 Pod 流量:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-frontend
spec:podSelector:matchLabels:role: frontendingress:- from:- podSelector:matchLabels:role: backendports:- protocol: TCPport: 80
  • 作用:僅允許帶有 role: backend 標簽的 Pod 訪問 role: frontend Pod 的 80 端口。


總結

  • CNI 插件是 Kubernetes 網絡的核心,決定 Pod 通信的性能和功能特性。

  • Flannel 簡化部署,適合基礎場景;Calico 提供高性能和策略控制,適合生產環境。

  • Pod 間通信通過網橋(同節點)或 Overlay/路由(跨節點)實現,不同插件采用不同技術。

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

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

相關文章

使用keepalived結合tomcat和nginx搭建三主熱備架構

角色主機名軟件IP地址用戶client172.25.250.90keepalivedVIP172.25.250.100keepalivedVIP172.25.250.101keepalivedVIP172.25.250.102masterserverAkeepalived, nginx172.25.250.30backupserverBkeepalived, nginx172.25.250.31backupserverCkeepalived, nginx172.25.250.32web…

STRUCTBERT:將語言結構融入預訓練以提升深度語言理解

【摘要】最近&#xff0c;預訓練語言模型BERT&#xff08;及其經過穩健優化的版本RoBERTa&#xff09;在自然語言理解&#xff08;NLU&#xff09;領域引起了廣泛關注&#xff0c;并在情感分類、自然語言推理、語義文本相似度和問答等各種NLU任務中達到了最先進的準確率。受到E…

leetcode_977. 有序數組的平方_java

977. 有序數組的平方https://leetcode.cn/problems/squares-of-a-sorted-array/ 1.題目 給你一個按 非遞減順序 排序的整數數組 nums&#xff0c;返回 每個數字的平方 組成的新數組&#xff0c;要求也按 非遞減順序 排序。 示例 1&#xff1a; 輸入&#xff1a;nums [-4,-1…

Nginx—nginx.conf 配置結構詳解

一、nginx.conf 配置結構 函數 說明 main 全局配置 event 配置工作模式以及連接數 http http模塊相關配置 server 虛擬主機配置&#xff0c;可以有多個 location 路由規則&#xff0c;表達式 upstream 集群、內網服務器&#xff08;負載均衡也在這里邊配&#xff…

斐波那契數列----C語言

關于斐波那契 已知&#xff1a; 問題背景&#xff1a;一對兔子從第3個月開始每月生一對新兔子&#xff0c;新兔子同樣在第3個月開始繁殖。 關鍵觀察&#xff1a; 第1個月&#xff1a;1對&#xff08;初始兔子&#xff09;。 第2個月&#xff1a;1對&#xff08;未成熟&#…

vulhub靶場—— Tomcat8

目錄 一、漏洞描述 二、靶場搭建 三、漏洞復現 1、弱密碼 2、文件上傳 一、漏洞描述 環境描述&#xff1a; Tomcat 支持后臺部署 war 文件&#xff0c;可以直接將 webshell 部署到 web 目錄下。tomcat 默認的管理頁面 manager 使用 basic 認證用戶名和密碼登錄&#xff0…

使用 Spring AI Aliabab Module RAG 構建 Web Search 應用

使用 Spring AI Alibaba 構建大模型聯網搜索應用 Spring AI 實現了模塊化 RAG 架構&#xff0c;架構的靈感來自于論文“模塊化 RAG&#xff1a;將 RAG 系統轉變為類似樂高的可重構框架”中詳述的模塊化概念。 Spring AI 模塊化 RAG 體系 總體上分為以下幾個步驟&#xff1a; …

一些練習 C 語言的小游戲

一些練習 C 語言的小游戲 — 1. 猜數字游戲 描述&#xff1a;程序隨機生成一個數字&#xff0c;玩家需要猜測這個數字&#xff0c;并根據提示&#xff08;太高或太低&#xff09;調整猜測&#xff0c;直到猜中為止。 功能點&#xff1a; 隨機數生成 (rand() 函數)。循環和…

關于中文編程的一些思考

隨著信息化與數字化的發展&#xff0c;工業4.0時代亦將徐徐到來。當計算機的普及程度越來越高&#xff0c;數據的產生、傳輸、處理等變得越來越快、越來越大量的時候&#xff0c;人們想要自動化辦公的愿望也越來越強烈&#xff0c;希望能將自身從耗費腦力但是重復繁瑣的工作中解…

golang 日志log與logrus

目錄 一、Go 標準庫 log 詳解 1. 功能特點 2. 常用函數 3. 示例代碼 4. 優勢和局限 二、第三方庫 logrus 詳解 1. 功能特點 2. 核心功能 3. 示例代碼 4. 優勢和擴展性 三、總結 1. 何時選擇 log&#xff1f; 2. 何時選擇 logrus&#xff1f; 3. 對比總結 一、Go 標…

消費品行業創新創業中品類創新與數字化工具的融合:以開源 AI 智能客服、AI 智能名片及 S2B2C 商城小程序為例

摘要&#xff1a; 本文聚焦于消費品行業的創新與創業&#xff0c;深入探討“選擇大于努力”這一觀點&#xff0c;強調品類選擇在品牌發展中的關鍵作用。同時&#xff0c;詳細分析了品類創新對于新消費品牌崛起以及傳統品牌轉型的重要意義。在此基礎上&#xff0c;引入開源 AI 智…

Razer macOS v0.4.10快速安裝

鏈接點這里下載最新的 .dmg 文件。將下載的 .dmg 映像文件拖入 應用程序 文件夾中。若首次打開時出現安全警告【什么扔到廢紙簍】&#xff0c;這時候點擊 Mac 的“系統偏好設置”-> “安全性與隱私”-> “通用”&#xff0c;然后點擊底部的 “打開”。【或者仍然打開】 對…

Flask項目部署:Flask + uWSGI + Nginx

目錄 1,網絡架構 2,環境安裝 2.1,安裝yum:Shell軟件包管理器 2.2 安裝python 2.3 安裝uWSGI 2.4 安裝Flask 3,上傳工程包到服務器,打包Flask項目 4,創建和配置 uwsgi 配置文件 uwsgi.ini 4.1配置文件 4.2配置文件注釋詳解 5,啟動服務 6,安裝nginx 7,nginx配置 8,…

[FPGA基礎學習]實現流水燈與按鍵暫停

FPGA實現LED流水燈 1.vscode的安裝和使用 vscode下載 Visual Studio Code - Code Editing. Redefined vscode插件&#xff08;Verilog-HDL/SystemVerilog&#xff09;下載 quartus綁定vscode 2.用6個LED完成周期為1秒的跑馬燈效果 流水燈模塊設計 時鐘輸入 DE2-115開發板…

【TensorRT】TensorRT從安裝到推理——Python 環境下 MobileNetV4 三分類任務

我想開發一個基于深度學習的分類小軟件&#xff0c;逐漸了解到了TensorRT在模型推理速度上的優勢&#xff0c;經過一下午資料的查找實現了將onnx模型轉為TensorRT格式模型的推理及測試過程。將實現過程記錄下來方便日后查看。 本文實驗設備是MX350顯卡 2G顯存 一 、安裝Tenso…

1.兩數之和(Java)

1. 題目描述 LeetCode 1. 兩數之和&#xff08;Two Sum&#xff09; 給定一個整數數組 nums 和一個目標值 target&#xff0c;請你在該數組中找出和為目標值的那兩個整數&#xff0c;并返回它們的索引。 示例 1&#xff1a; 輸入&#xff1a;nums [2,7,11,15], target 9 …

《深入探索 Python 數據分析:用 Pandas 高效處理與可視化大型數據集》

《深入探索 Python 數據分析:用 Pandas 高效處理與可視化大型數據集》 引言:從零到分析高手 數據是當代社會最寶貴的資源,而數據分析技能是現代職業人不可或缺的一部分。在數據科學的領域中,Python 已成為當之無愧的“首選語言”,其強大的生態系統和簡潔的語法讓人如虎添…

將樹莓派5當做Ollama服務器,C#調用generate的API的示例

其實完全沒這個必要&#xff0c;性能用腳后跟想都會很差。但基于上一篇文章的成果&#xff0c;來都來了就先簡單試試吧。 先來看看這個拼夕夕上五百多塊錢能達到的效果&#xff1a; 只要對速度沒要求&#xff0c;那感覺就還行。 Ollama默認只在本地回環&#xff08;127.0.0…

python基礎學習二(列表及字典的使用)

文章目錄 列表列表的創建獲取列表中的多個元素判斷列表中元素是否存在列表元素的添加操作列表元素的刪除操作列表元素的修改列表的排序列表生成式 字典字典的創建字典的常規操作字典的常用操作字典的視圖操作字典元素的遍歷字典的特點字典的生成式 列表 一個對象由id&#xff0…

Android設計模式之代理模式

一、定義&#xff1a; 為其他對象提供一種代理以控制對這個對象的訪問。 二、角色組成&#xff1a; Subject抽象主題&#xff1a;聲明真是主題與代理的共同接口方法&#xff0c;可以是一個抽象類或接口。 RealSubject真實主題&#xff1a;定義了代理表示的真實對象&#xff0c…