当前位置: 首页 > news >正文

Kubernetes从零到精通(11-CNI网络插件)

 Kubernetes网络模型

      Kubernetes的网络模型(Kubernetes Networking Model)旨在提供跨所有节点、Pod和服务的统一网络连接。它的核心理念是通过统一的网络通信规则,保证集群中的所有组件能够顺畅地相互通信。Kubernetes网络模型主要有以下几个关键点:

1.Pod-to-Pod通信

        每个 Pod 都有一个独立的IP地址,即"IP per Pod" 模型。每个Pod中的所有容器共享同一个网络命名空间,因此可以通过localhost通信。

        Pod 之间直接通信:无论Pod在同一Node或不同Node上,它们可以直接通过IP地址互相通信,不需要使用NAT或端口映射。

2.Pod-to-Service通信

        如上节提到,Pod通过Service方式访问其他Pod。

3.Service-to-External通信

        如Ingress/Gateway API+ Service的ClusterIP模式;Service的NodePort模式;Service的LoadBalancer模式等。

4.Node-to-Pod通信

        在 Kubernetes集群中,节点上的应用可以直接与Pod通信,无需额外配置。Kube-proxy负责在节点级别管理这些网络规则,保证节点可以通过虚拟IP或端口访问服务。

5.网络策略(Network Policies)

        Kubernetes通过网络策略(Network Policies)来控制Pod之间的通信权限。网络策略允许用户基于标签、命名空间等指定允许或禁止的网络流量(必须使用支持NetworkPolicy实施的网络插件CNI)。

6.网络插件CNI( Container Network Interface)

        Kubernetes本身并不定义如何实现网络,而是通过CNI插件扩展网络功能。这些插件提供Pod 的网络接口配置和跨节点的网络互联能力。常见的CNI插件包括:

Calico:提供网络策略、网络隔离等高级功能。

Flannel:轻量级的 Overlay 网络方案。

Weave:提供简单的跨节点网络连接。

Pod-to-Pod场景

        在 Kubernetes 中,Pod和Pod之间通信是非常常见的需求,主要是为了实现应用之间的互操作性。虽然可以使用Pod-to-Service来解决大部分通信问题,但Pod之间直接通信也是有其场景和必要性的。

状态紧密关联的Pod

        某些场景下,多个Pod之间存在紧密的状态共享和低延迟的通信需求。例如:

数据库集群:在数据库集群中,主节点和从节点之间需要实时同步数据,直接Pod间通信比通过 Service更加高效。

高性能计算(HPC)和分布式计算:在某些需要低延迟的高性能计算场景下,多个Pod可能会进行频繁的点对点通信,例如分布式计算中的任务调度和数据交换。

有状态应用

        有些应用需要每个Pod直接与另一个特定Pod通信,尤其是在有状态应用中,例如Kafka、Cassandra等分布式系统。这类系统中,各个Pod可能有各自的状态和存储分片,彼此之间的通信不总是通过Service进行。

批处理任务

        在某些批处理任务中,多个Pod之间需要通过IP进行点对点通信以协调任务的执行。这类Pod通常是短期存在的,使用Service可能会增加额外的延迟和复杂度。

Kube-proxy和CNI的区别

        kube-proxy组件(或者已经部署的其他替换组件)是Kubernetes自带的组件,使用linux的iptables、IPVS 等,实现Service的虚拟 IP(ClusterIP)和负载均衡功能。主要管理Service层面的网络规则,而不管理底层的网络路由、网络策略等。

        CNI网络插件,使用linux的路由、虚拟网络技术等,主要实现Pod-to-Pod通信,以及网络安全策略等。以下介绍Flannel和Calico。

Flannel

Flannel简介

        Flannel是一种简单易用的Kubernetes网络插件,专注于为Kubernetes提供容器网络解决方案。它的主要作用是为Kubernetes集群中的Pod提供跨主机的网络连接,允许不同节点上的Pod能够互相通信。Flannel是一种覆盖网络(overlay network)实现,底层依赖于封装(encapsulation)技术来跨越不同节点的网络边界。

Flannel组件

flanneld:Flannel的主要守护进程,负责分配子网并处理数据包的封装与解封装。它运行在每个节点上,并与etcd或Kubernetes API Server交互,维护整个集群的子网分配信息。

etcd/Kubernetes API Server:Flannel通过etcd或Kubernetes API Server来存储和共享每个节点的子网信息。集群中的所有节点通过etcd或Kubernetes API Server了解如何将流量路由到其他节点上的Pod。

Backend(后端):Flannel支持多种网络后端,如VXLAN、host-gw、UDP等,决定了Flannel使用哪种方式封装和路由数据包。

Flannel的网络模式

        Flannel提供了多种模式,用户可以根据集群的实际需求选择不同的网络模式:

VXLAN模式:默认的Flannel网络模式,适合大多数情况下的Kubernetes集群,使用封装技术实现跨主机通信。

Host-GW模式:直接通过主机路由表实现节点间通信,适合物理网络已经具备节点直接通信的场景,性能相对较高。

UDP模式:最早的实现方式,依赖于UDP封装,但由于性能较差,通常不建议使用。

AWS VPC模式:针对AWS环境的优化,允许Flannel与AWS的VPC网络集成。

Calico

Calico简介

        Calico是一种广泛使用的Kubernetes网络插件,主要用于提供容器网络和网络安全策略。Calico的设计目标是提供高性能的、可扩展的网络连接,并且能够在Kubernetes集群中实施细粒度的安全策略(网络策略)。它可以在多个云环境和裸机上工作,既支持容器网络,也支持虚拟机和物理主机的网络。它通过直接路由实现Pod的网络通信,而不依赖像VXLAN或GRE这样复杂的隧道封装(overlay)技术。

Calico组件

Felix:Calico的核心组件,运行在每个节点上,负责配置和管理节点上的网络路由和防火墙规则。Felix会根据Kubernetes中定义的网络策略和Calico的配置来控制网络的流量。它负责维护主机的路由表、接口、IP地址和防火墙规则,以便正确地转发数据包和应用安全策略。

BIRD:Calico的BGP功能依赖于一个轻量级的BGP路由守护进程,通常使用BIRD。BIRD负责在集群节点之间分发路由信息,从而确保每个节点都知道如何将流量发送到其他节点的Pod。

etcd/Kubernetes API Server:Calico通过etcd或Kubernetes API Server来存储和共享网络状态信息。通过这些存储,Calico能够记录各个节点的Pod IP分配和网络策略配置。

Calico的网络模式

Calico可以通过以下两种模式实现跨节点的Pod通信:

BGP模式:Calico默认使用BGP路由协议来分发路由信息,每个节点会通过BGP将本节点的PodIP地址段发布给集群中的其他节点。通过BGP,所有节点之间形成了一个互通的网络,每个节点知道如何将流量路由到其他节点上的Pod。

网络命名空间的相关介绍在这里,最后有Calico BGP模式的底层模拟:Linux技术01-虚拟网络、网络命名空间

IP-in-IP模式:在某些情况下,底层网络无法直接路由Pod的IP地址(例如,两个节点的网络无法直接互通)。此时,Calico可以启用IP-in-IP模式,将Pod的IP包封装在主机的IP包中进行传输。这种模式类似于VXLAN,但仍然比封装隧道轻量。

相关文章:

Kubernetes从零到精通(11-CNI网络插件)

Kubernetes网络模型 Kubernetes的网络模型(Kubernetes Networking Model)旨在提供跨所有节点、Pod和服务的统一网络连接。它的核心理念是通过统一的网络通信规则,保证集群中的所有组件能够顺畅地相互通信。Kubernetes网络模型主要有以下几个关…...

【手机马达共振导致后主摄马达声音异常】

手机马达共振导致后主摄马达声音异常 问题根因解决方案其他易混淆 问题根因 当手机马达的震动频率和摄像头AF马达的一二阶震动频率处于共振频段的时候,手机马达震动时候有很大概率会干扰到后置摄像头的对焦马达正常工作,可能出现的影响有出现滋滋杂音&a…...

AUTOSAR UDS NRC

UDS NRC NRC 含义如表格所示 NRC代码描述含义0x00Ok没有错误,请求已成功执行0x01~0x0FISOSAEReservedISO 保留,暂时未定义0x10General reject服务请求被拒绝,原因不明确0x11Service not supported请求的服务不被支持0x12Sub-function not supported请求的子功能不被支持0x13…...

[数据结构]无头单向非循环链表的实现与应用

文章目录 一、引言二、线性表的基本概念1、线性表是什么2、链表与顺序表的区别3、无头单向非循环链表 三、无头单向非循环链表的实现1、结构体定义2、初始化3、销毁4、显示5、增删查改 四、分析无头单向非循环链表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引…...

认识结构体

目录 一.结构体类型的声明 1.结构的声明 2.定义结构体变量 3.结构体变量初始化 4.结构体的特殊声明 二.结构体对齐(重点难点) 1.结构体对齐规则 2.结构体对齐练习 (一)简单结构体对齐 (二)嵌套结构体对齐 3.为什么存在内存对齐 4.修改默认对齐数 三.结构体传参 1…...

Linux驱动.之MT7601,USB-WiFi网卡移植到X210开发板,wpa_supplicant配置工具的使用(一)

一、移植前 1、下载与解压无线网卡MT7601U驱动源码压缩包 DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 解压后有如下文件 ate common iwpriv_usage.txt Makefile mgmt phy README_STA_usb RT2870STA.dat sta_ate_iwpriv_usage.txt chips include m…...

ChatGPT 在国内使用的方法

AI如今很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同等等,ChatGPT 真是无所不能~ 作为一款出色的大语言模型,ChatGPT 实现了人类般的对话交流,最主要是能根据上下文进行互动。 接下来,我将介绍 ChatGPT 在国…...

思通数科开源产品:免费的AI视频监控卫士安装指南

准备运行环境: 确保您的服务器或计算机安装了Ubuntu 18.04 LTS操作系统。 按照产品要求,安装以下软件: - Python 3.9 - Java JDK 1.8 - MySQL 5.5 - Redis 2.7 - Elasticsearch 8.14 - FFmpeg 4.1.1 - RabbitMQ 3.13.2 - Minio (…...

阿里HPN-用于大型语言模型训练的数据中心网络

阿里巴巴HPN:用于大型语言模型训练的数据中心网络 探索大规模语言模型训练新方法:阿里巴巴HPN数据中心网络论文。 摘要 本文介绍了阿里云用于大型语言模型(LLM)训练的数据中心网络HPN。由于LLM和一般云计算之间的差异(例如,在流量模式和容错性方面)&…...

re题(27)BUUFCTF-[MRCTF2020]Transform

BUUCTF在线评测 (buuoj.cn) 先到ida,先看一下字符串 找到主函数 int __cdecl main(int argc, const char **argv, const char **envp) {char Str[104]; // [rsp20h] [rbp-70h] BYREFint j; // [rsp88h] [rbp-8h]int i; // [rsp8Ch] [rbp-4h]sub_402230(argc, argv…...

偶数、奇数、整数与指数

引言 在前面的课程中,我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型、函数的定义与使用、函数调用与作用域、函数的高级应用、质数、倍数与余数。本课…...

关于c#中异步async和await的理解

之前给大家介绍了所谓异步编程的用法,但是没有细致的理解到,今天想和大家一起探讨一下; 前文: C#笔记14 异步编程Async,await,task类-CSDN博客 异步的起初 应用程序会启动一个进程,一个进程可以有很多…...

mysql等保数据库命令

mysql数据库命令 默认安装位置:C:\Program Files\MySQL\MySQL Server 8.0\bin select version() from dual; desc mysql.user; 查看表中有哪些列 1、SELECT user, host, authentication_string, account_locked ,password_lifetime FROM mysql.user; 查询用户表…...

云平台在大规模设备管理和数据分析中的作用

在当代数字化转型的浪潮中,云平台作为信息技术基础设施的核心组件,扮演着无可替代的角色,尤其在大规模设备管理和数据分析领域,其重要性和影响力日益凸显。本文旨在深入探讨云平台如何通过其独特的优势,促进数据的高效…...

数据结构-树和二叉树

树 和 二叉树 1.树的概念 树 tree 是n(n>0)个节点的有限集 在任意的一个非空树中 (1)有且仅有一个特定的被称为 根(root) 的节点 (2)当n>1时, 其余的节点可分为m(m>0)个互不相交的有限集T1, T2, T3, .... …...

树和二叉树的概念以及结构

一起加油学数据结构 目录 树的概念以及结构 树的概念 树的相关概念 树的表示 二叉树的概念以及结构 二叉树的概念 特殊的二叉树 二叉树的性质 二叉树的存储结构 树的概念以及结构 树的概念 树是一种非线性的数据结构,它是由n(n>0&#xff09…...

c语言习题

第三章 数据类型、运算符与表达式 一 单项选择题 1.下面四个选项中,均不是 c 语言关键字的选项是( )。 A) define IF Type B) getc char printf C) include scanf case D…...

Python 低层多线程接口_thread的用法

_thread是python标准库中的一个低层多线程API,可以在进程中启动线程来处理任务,并且提供了简单的锁机制来控制共享资源的同步访问。本文就_thread模块的用法和特性做个简单的演示。 文章目录 一、进程和线程的区别二、_thread模块的用法2.1 派生线程2.2…...

flutter基础 --dart语法学习

由于想要写一款性能较好,但是又可以一套代码多个平台运行的客户端app,所以选择了flutter 就去看了官方文档,大体发现flutter使用的dart语言和java和js差不多,感觉就是缝合怪。 Dart 是一种面向对象的编程语言,语法上与 Java、JavaScript 等语言有一些相似之处&…...

新手必看:一步步教你绑定常见邮箱到第三方应用(如何绑定QQ、163、Hotmail、Gmail等邮箱)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 邮箱绑定 📒📫 QQ邮箱📫 163邮箱📫 Hotmail邮箱📫 Gmail邮箱📫 Yahoo邮箱📫 iCloud邮箱📫 其他邮箱⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾经为绑定第三方邮箱而感到困惑?你不是一个人!许多人在尝试将QQ邮…...

Phi-4-mini-reasoning实际作品:15个跨学科逻辑题(数学/哲学/计算机)解答集

Phi-4-mini-reasoning实际作品:15个跨学科逻辑题(数学/哲学/计算机)解答集 1. 模型能力概览 Phi-4-mini-reasoning是一个专注于推理任务的文本生成模型,特别擅长处理需要多步逻辑推导的问题。与通用聊天模型不同,它被…...

告别MinGW!用WSL2+Clion打造Win10下最顺滑的C/C++开发环境(2023最新版)

告别MinGW!用WSL2Clion打造Win10下最顺滑的C/C开发环境(2023最新版) 在Windows平台上进行C/C开发,开发者们长期被MinGW的性能瓶颈所困扰。编译速度慢、调试体验差、跨平台兼容性问题频发,这些问题严重影响了开发效率。…...

VLM | 从视觉语言模型到自动驾驶决策的“慢思考”系统

1. 视觉语言模型(VLM)的本质与突破 当我们谈论自动驾驶时,大多数人首先想到的是激光雷达、摄像头和复杂的算法。但真正让机器"理解"复杂交通场景的,其实是背后那个能看懂图像、读懂文字、还能进行逻辑推理的"大脑&…...

Windows 11硬件限制突破与系统升级完全指南

Windows 11硬件限制突破与系统升级完全指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat 当你的电脑因TPM 2.0或CPU世…...

从编译错误到版本管理:C语言“商人过河”游戏代码的现代化改造之旅

1. 从古董代码到现代项目:一场技术考古与修复之旅 第一次打开那份"商人过河"的C语言游戏代码时,我仿佛穿越回了二十年前。满屏的编译错误、过时的函数调用、混乱的格式,还有那些早已被现代编译器抛弃的写法。这让我想起刚入行时接手…...

合肥工业大学LaTeX学位论文模板零基础入门:高效解决方案与实战指南

合肥工业大学LaTeX学位论文模板零基础入门:高效解决方案与实战指南 【免费下载链接】HFUT_Thesis LaTeX Thesis Template for Hefei University of Technology 项目地址: https://gitcode.com/gh_mirrors/hf/HFUT_Thesis 在学术写作中,格式规范的…...

程序员副业变现全攻略

CSDN程序员副业图谱技术文章大纲副业方向分类技术变现类:外包开发、技术咨询、代码审核内容创作类:技术博客、视频教程、电子书编写产品开发类:独立应用、开源项目、插件工具教育培训类:在线课程、一对一辅导、技术直播技术栈与工…...

StructBERT中文情感识别效果展示:电影评论情感极性与票房相关性验证

StructBERT中文情感识别效果展示:电影评论情感极性与票房相关性验证 1. 项目概述与背景 StructBERT 情感分类 - 中文 - 通用 base 是百度基于 StructBERT 预训练模型微调后的中文通用情感分类模型,专门用于识别中文文本的情感倾向。这个模型在中文 NLP…...

C语言调用Omni-Vision Sanctuary轻量级推理接口(C API)教程

C语言调用Omni-Vision Sanctuary轻量级推理接口(C API)教程 1. 引言:为什么选择C API? 在嵌入式设备和资源受限的环境中,Python运行时往往显得过于臃肿。Omni-Vision Sanctuary提供的C语言接口(C API&…...

告别插件!保姆级教程:用Nginx反向代理搞定海康威视Web无插件视频预览

海康威视Web无插件视频预览的Nginx反向代理实战指南 引言 在现代安防监控系统集成中,海康威视设备因其稳定性和广泛兼容性成为行业首选。然而,传统Web集成方案往往依赖浏览器插件,这不仅增加了部署复杂度,也带来了安全风险。随着H…...