Kubernetes網絡原理深度解析

Kubernetes網絡原理深度解析

1 Kubernetes網絡模型

Kubernetes 網絡模型是其實現容器化應用高效通信的基礎框架。它致力于解決容器編排環境中復雜的網絡連通性、服務發現與負載均衡等問題,追求讓容器、Pod 等網絡端點像傳統主機網絡一樣簡潔、可預測地通信 。其核心設計目標包括:各 Pod 擁有獨立且可直接訪問的 IP 地址,同一 Pod 內容器共享網絡命名空間,服務(Service)提供穩定網絡入口并實現負載分發,助力應用在集群內便捷通信與擴展 。

2 Kubernetes網絡的實現機制

2.1 容器和容器之間的通信

同一 Pod 內的容器,因共享網絡命名空間(包括網絡協議棧、IP 地址、端口等資源 ),可通過 localhost 加端口的方式直接通信,就像傳統單機進程間通信一樣高效,無需額外網絡轉發開銷,利用共享的網絡資源快速交互數據 。

2.2 Pod和Pod之間的通信

Pod 間通信需解決跨網絡命名空間、跨主機的問題。Kubernetes 依賴網絡插件(如 CNI 插件 )構建集群網絡,讓每個 Pod 分配到集群內唯一 IP 。通信時,借助虛擬網絡設備(如網橋、隧道 )、路由規則等,封裝、轉發數據包。 overlay 網絡方案會對 Pod 流量封裝后跨主機傳輸,再解封裝投遞;基于主機路由的方案則通過配置主機路由表,指引 Pod 流量在集群主機間正確轉發 ,保障不同主機上 Pod 能基于 IP 直接通信。

3 CNI網絡模型

3.1 CNI網絡模型簡介

CNI(Container Network Interface )是容器網絡接口標準,為容器平臺(如 Kubernetes )與網絡插件解耦提供規范。它定義了簡潔的 JSON 格式接口,讓容器運行時(如 containerd、runc )能調用不同網絡插件,動態為容器配置網絡、分配 IP 等。借助 CNI,Kubernetes 無需關注網絡實現細節,可靈活對接 Flannel、Calico 等多樣網絡方案,適配不同集群網絡需求,推動容器網絡生態發展 。

3.2 CNI網絡模型詳解

CNI 工作流程包含“添加網絡”與“刪除網絡”階段 。“添加網絡”時,容器運行時調用 CNI 插件,傳遞容器網絡命名空間等信息,插件創建網絡設備(如 veth 對 ),一端接入容器命名空間,另一端連入主機網絡(或 overlay 網絡端點 ),分配 IP 并配置路由、防火墻規則等,完成容器網絡接入;“刪除網絡”則是反向操作,釋放網絡資源,確保集群網絡資源合理回收。同時,CNI 支持鏈式插件,可組合多個功能插件(如先做網絡隔離,再做 IP 分配 ),靈活擴展網絡功能 。

4 開源容器網絡方案

4.1 Flannel插件的原理和部署示例
  • 原理:Flannel 是經典 CNI 插件,為集群提供 overlay 網絡。它默認用 VXLAN 模式,為主機分配子網,每個主機上 Pod 從主機子網取 IP 。Pod 跨主機通信時,Flannel 守護進程(flanneld )捕獲流量,封裝成 VXLAN 數據包,通過主機間 UDP 隧道傳輸,目標主機解封裝后投遞到目標 Pod 。還支持 host - gateway 模式,利用主機路由表轉發 Pod 流量,減少封裝開銷,提升性能 。
  • 部署示例:在 Kubernetes 集群,先下載 Flannel 資源清單(kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml ),清單會創建 DaemonSet ,在各節點運行 flanneld ,配置集群網絡參數(如 Pod 網段 )。部署后,檢查 Pod 狀態(kubectl get pods -n kube-flannel ),確保正常運行,測試 Pod 跨主機通信,驗證網絡連通性 。
4.2 Open vSwitch插件的原理和部署示例
  • 原理:Open vSwitch(OVS )是虛擬交換機,可靈活定義網絡流表規則。在容器網絡,它作為底層網絡設備,構建 overlay 網絡(如 GRE、VXLAN 隧道 )。通過流表匹配數據包源目 IP、端口等,實現轉發、隔離、QoS 等功能。配合 Kubernetes ,OVS 可作為網絡插件底層支撐,為 Pod 提供網絡連接,基于流表精細控制 Pod 流量,適配復雜網絡策略場景 。
  • 部署示例:先在集群節點安裝 OVS 軟件包(如在 Ubuntu 用 apt install openvswitch-switch )。然后部署基于 OVS 的 CNI 插件(如 Multus 配合 OVS 配置網絡 ),或使用專門集成 OVS 的網絡方案。通過配置 OVS 網橋、隧道端口,編寫 CNI 配置文件指定 OVS 網橋、IP 分配等,應用配置后,創建 Pod 測試網絡,利用 ovs-vsctl 命令查看流表、端口狀態,驗證網絡功能 。
4.3 直接路由的原理和部署示例
  • 原理:直接路由(Direct Routing )摒棄 overlay 封裝,依賴主機路由表實現 Pod 跨主機通信。網絡插件為每個主機分配 Pod 子網,在主機上配置靜態路由,把其他主機 Pod 子網的流量發往對應主機物理網卡。借助 BGP 協議(如 Calico 的 BGP 模式 ),集群主機間自動交換路由信息,動態維護路由表,讓 Pod 流量基于物理網絡三層轉發,減少封裝延遲,提升網絡性能,適合對網絡效率要求高的場景 。
  • 部署示例:以 Calico 開啟直接路由模式為例,修改 Calico 配置,啟用 ipipMode: Never(關閉 IPIP 封裝 ),配置 BGP 鄰居(如集群主機間建立 BGP 連接 )。部署 Calico 資源清單后,Calico 節點守護進程(calico-node )會在主機配置路由規則,通過 BGP 協議同步路由。測試時,在不同主機 Pod 間 ping 或傳輸數據,查看主機路由表(ip route ),確認跨主機 Pod 路由正確,驗證直接路由效果 。
4.4 Calico插件的原理和部署示例
  • 原理:Calico 是強大的 Kubernetes 網絡方案,基于 BGP 協議和 Linux 路由實現網絡。它為每個 Pod 分配獨立 IP,利用主機路由表轉發流量,無需 overlay 封裝(也支持 IPIP 模式 )。通過網絡策略(NetworkPolicy ),基于標簽精細控制 Pod 間訪問,如允許或拒絕特定命名空間、標簽的 Pod 通信。Calico 節點代理(calico-node )負責維護路由、應用網絡策略,控制器組件管理網絡資源分配與策略同步,適配大規模集群網絡需求 。
  • 部署示例:使用官方資源清單部署,kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 。部署后,檢查 calico-node Pod 狀態(kubectl get pods -n calico-system )。配置網絡策略,例如創建一個策略,允許 app=web 標簽的 Pod 被 app=client 標簽的 Pod 訪問:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-web-accessnamespace: default
spec:podSelector:matchLabels:app: webingress:- from:- podSelector:matchLabels:app: client

應用策略后,測試 Pod 間通信,驗證網絡策略生效情況 。

5 Kubernetes網絡策略

5.1 網絡策略概述

Kubernetes 網絡策略(NetworkPolicy )是實現 Pod 網絡訪問控制的核心機制,基于標簽選擇器,定義 Pod ingress(入站 )和 egress(出站 )流量規則。它能精細管控哪些 Pod 可與其他 Pod、服務甚至外部網絡通信,像設置白名單、黑名單,隔離敏感應用網絡,保障集群網絡安全,適配多租戶、微服務權限分離等場景 。

5.2 Selector功能說明

Selector(選擇器 )是網絡策略的關鍵,通過標簽匹配 Pod 。podSelector 用于選定受策略影響的 Pod 集合;ingress.from.podSelectoregress.to.podSelector 則指定流量來源或目標的 Pod 標簽。例如,策略中 podSelector: {matchLabels: {role: backend}} 選中所有帶 role=backend 標簽的 Pod ,ingress.from.podSelector: {matchLabels: {role: frontend}} 允許前端 Pod 訪問,利用標簽靈活、動態地定義網絡訪問關系 。

5.3 為命名空間配置默認的網絡策略

可為命名空間配置默認網絡策略,控制該命名空間下未明確配置策略的 Pod 流量。創建默認拒絕策略,拒絕所有入站和出站流量:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: default-denynamespace: my-namespace
spec:podSelector: {}  # 匹配命名空間下所有PodpolicyTypes:- Ingress- Egressingress: []      # 無入站規則,默認拒絕egress: []       # 無出站規則,默認拒絕

后續為該命名空間內特定 Pod 配置允許規則,可覆蓋默認拒絕,實現“默認隔離,按需開放”,提升命名空間網絡安全性 。

5.4 網絡策略應用示例

假設電商應用,有 frontend(前端 )、backend(后端 )、db(數據庫 )Pod 。創建策略允許前端訪問后端,后端訪問數據庫,拒絕其他流量:

  • 后端 Pod 策略(允許前端訪問 ):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: backend-allow-frontendnamespace: default
spec:podSelector:matchLabels:app: backendingress:- from:- podSelector:matchLabels:app: frontend
  • 數據庫 Pod 策略(允許后端訪問 ):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: db-allow-backendnamespace: default
spec:podSelector:matchLabels:app: dbingress:- from:- podSelector:matchLabels:app: backend
  • 前端、后端、數據庫的出站策略可按需配置,如限制后端只能訪問數據庫,通過網絡策略構建清晰、安全的應用網絡訪問鏈路 。
5.5 網絡策略的一些特殊情況和功能限制

網絡策略僅在支持的網絡插件(如 Calico、Cilium )下生效,若網絡插件不支持,策略配置無效。策略匹配是“與”邏輯,多個策略疊加需注意規則沖突。對同一 Pod ,入站規則需所有策略允許才放行,存在調試復雜問題。且網絡策略主要管控 Pod 間七層以下流量,對應用層協議(如 HTTP 路徑 )精細控制能力有限,需結合服務網格(如 Istio )等方案補充 。

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

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

相關文章

Python3.10 + Firecrawl 下載 Markdown 文檔:構建高效通用文章爬蟲

在信息爆炸的時代,從各種網站收集和整理文章內容已成為許多開發者和研究人員的常見需求。無論是為了內容聚合、數據分析還是知識管理,一個高效、穩定的通用文章爬蟲都是不可或缺的工具。 本文將詳細介紹如何使用 Python 3.10 結合 Firecrawl API 構建一個…

國產3D大型裝配設計新突破②:裝配約束智能推斷 | 中望3D 2026

本文為CAD芯智庫整理,未經允許請勿復制、轉載!→ www.xwzsoft.com/h-nd-605.html中望3D2026亮點速遞之【裝配篇】已經介紹了設計效率的提升,今天將分享的是中望3D2026【裝配約束智能推斷】,也預告一下第三篇是講解【組件復用效率提…

深入淺出設計模式——行為型模式之觀察者模式 Observer

文章目錄1.觀察者模式簡介2.觀察者模式結構3.觀察者模式代碼實例3.0.公共頭文件3.1.觀察者3.1.1.抽象觀察者Observer3.1.2.具體觀察者Player3.2.目標類3.2.1.抽象目標AllyCenter3.2.2.具體目標AllyCenterController循環包含錯誤示例“前向聲明什么時候不夠、必須 #include 對方…

CA證書、SSL加速器、HTTPS、HTTP和域名之間的關系

理解CA證書、SSL加速器、HTTPS、HTTP和域名之間的關系對于構建安全、高效的網站至關重要。它們共同構成了現代安全網絡通信的基礎。下面是它們各自的概念以及它們之間的關系:域名 概念: 人類可讀的網站地址(如 www.example.com)。…

3D感知多模態(圖像、雷達感知)

一.BEVFusion1.簡要介紹BEV是一個俯視空間,Fusion做的就是融合,這里指的就是圖像和點云的融合。那如何把圖像和點云融合在一起?認為融合方法有三種:a.point level fusion:點集的融合,從點云中采樣一些點,再根據相機的內…

STM32 HAL庫驅動W25QXX Flash

STM32 HAL庫驅動W25QXX Flash 1. 概述 W25QXX系列是一種SPI接口的Flash存儲器,廣泛應用于嵌入式系統中作為數據存儲設備。本文檔詳細介紹了基于STM32 HAL庫的W25QXX Flash驅動實現,包括硬件連接、驅動函數實現以及使用示例。 項目源碼倉庫&#xff1a…

Vivado自定義IP核學習筆記

文章目錄【1】創建一個新的IP核【2】實現功能【3】編輯IP核【4】IP封裝【5】創建Vivado工程【1】創建一個新的IP核 1.1 打開Vivado->點擊【Tasks->Manage IP->New IP Location】->彈出窗口1.2 【Next】->設置IP屬性->【Finish】->【OK】 【IP Location】…

【面試】高級開發面試場景題

1、如何保證MySql到ES的數據一致性? 答:ES是一個開元分布式搜索和分析引擎、它提供了全文搜索、結構化搜索分析以及這些組合的能力。 全文搜索能力:ES支持復雜的搜索能力,包括模糊匹配、短語查詢、布爾查詢等,并且可以快速的返回結果 實時數據分析:實時數據分析,支持對…

《 慢 SQL 分析與 SQL 優化實戰指南》

🔍 慢 SQL 分析與 SQL 優化實戰指南、 🧠前言 在數據庫性能調優中,慢 SQL 是性能瓶頸的常見元兇。 一次慢查詢可能會拖垮整個業務線程池,甚至引發鎖等待、雪崩效應。 對后端開發與 DBA 而言,快速定位并優化慢 SQL&am…

C#中如何運用JWT用戶認證

一、JWT概述JSON Web Token(JWT)是一種輕量級的身份認證機制,廣泛應用于分布式系統中的用戶認證。它通過緊湊的JSON格式存儲用戶身份信息,并使用數字簽名確保信息的完整性和真實性。與傳統的基于Session的認證相比,JWT…

Hibernate 使用詳解

在現代的Java開發中,數據持久化是一個至關重要的環節。而在眾多持久化框架中,Hibernate以其強大的功能和靈活性,成為了開發者們的首選工具。本文將詳細介紹Hibernate的原理、實現過程以及其使用方法,希望能為廣大開發者提供一些有…

【圖像算法 - 13】基于 YOLO12 與 OpenCV 的實時目標點擊跟蹤系統(系統介紹 + 源碼詳細)

基于 YOLO12 與 OpenCV 的實時點擊目標跟蹤系統 在計算機視覺領域,目標檢測與跟蹤是兩個核心任務。本文將介紹一個結合 YOLO 目標檢測模型與 OpenCV 跟蹤算法的實時目標跟蹤系統,該系統允許用戶通過鼠標交互選擇特定目標進行持續跟蹤,支持多…

【數據庫】 MySQL 表的操作詳解

在 MySQL 數據庫的日常開發與維護中,表的操作是最基礎且最常用的部分。本文將從 創建表、查看表結構、修改表 以及 刪除表 等方面進行詳細講解,并附上對應的 SQL 語句示例,方便在實際項目中直接應用。一、創建表 1.1 創建表語法 CREATE TABLE…

DiT: Transformer上的擴散模型

論文(ICCV 2023):Scalable Diffusion Models with Transformers 代碼和工程網頁:https://www.wpeebles.com/DiT.html DiTs(Diffusion Transformers)是首個基于Transformer架構的擴散模型!它在…

MySQL 索引:索引為什么使用 B+樹?(詳解B樹、B+樹)

文章目錄一、二叉查找樹(BST):不平衡二、平衡二叉樹(AVL):旋轉耗時三、紅黑樹:樹太高由一個例子總結索引的特點基于哈希表實現的哈希索引高效的查找方式:二分查找基于二分查找思想的二叉查找樹升級版的BST樹:AVL 樹四、…

ESP32入門開發·VScode空白項目搭建·點亮一顆LED燈

目錄 1. 環境搭建 2. 創建項目 3. 調試相關介紹 4. 代碼編寫 4.1 包含頭文件 4.2 引腳配置 4.3 設置輸出電平 4.4 延時函數 4.5 調試 1. 環境搭建 默認已經搭建好環境,如果未搭建好可參考: ESP32入門開發Windows平臺下開發環境的搭建…

ONLYOFFICE AI 智能體上線!與編輯器、新的 AI 提供商等進行智能交互

ONLYOFFICE AI 插件?迎來重要更新,帶來了新功能和更智能的交互體驗。隨著 AI 智能體(現為測試版)的上線、帶來更多 AI 提供商支持以及其他新功能,AI 插件已經成為功能強大的文檔智能助理。 關于 ONLYOFFICE ONLYOFFICE 文檔是多…

【C++進階學習】第十一彈——C++11(上)——右值引用和移動語義

前言: 前面我們已經將C的重點語法講的大差不差了,但是在C11版本之后,又出來了很多新的語法,其中有一些作用還是非常大的,今天我們就先來學習其中一個很重要的點——右值引用以及它所擴展的移動定義 目錄 一、左值引用和…

【IoTDB】363萬點/秒寫入!IoTDB憑何領跑工業時序數據庫賽道?

【作者主頁】Francek Chen 【專欄介紹】???大數據與數據庫應用??? 大數據是規模龐大、類型多樣且增長迅速的數據集合,需特殊技術處理分析以挖掘價值。數據庫作為數據管理的關鍵工具,具備高效存儲、精準查詢與安全維護能力。二者緊密結合&#xff0…

IEEE 2025 | 重磅開源!SLAM框架用“法向量+LRU緩存”,將三維重建效率飆升72%!

一、前言 當前研究領域在基于擴散模型的文本到圖像生成技術方面取得了顯著進展,尤其在視覺條件控制方面。然而,現有方法(如ControlNet)在組合多個視覺條件時存在明顯不足,主要表現為獨立控制分支在去噪過程中容易引入…