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.mzph.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…