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)在组合多个视觉条件时存在明显不足,主要表现为独立控制分支在去噪过程中容易引入…