Kubernetes相关的名词解释CNI插件(1)

(一)什么是CNI插件?

在 Kubernetes 中,CNI 插件(Container Network Interface Plugin) 是一种用于配置容器网络接口的标准工具,负责为 Pod 分配网络资源(如 IP 地址)并建立网络连接。它是 Kubernetes 网络模型的核心组件之一。

CNI 定义了一组规范和插件,使得容器运行时(如 Docker、containerd、CRI-O 等)能够与第三方网络插件(CNI 插件)通信,从而实现容器网络的配置和管理。

(二)CNI 的工作原理

CNI 的核心思想是将容器的网络配置与容器运行时解耦,通过插件机制实现网络配置的灵活性。CNI 的工作流程可以分为以下几个步骤:

容器运行时创建网络命名空间:当 Kubernetes 调度一个 Pod 到某个节点时,容器运行时(如 containerd 或 Docker)会为该 Pod 创建一个新的网络命名空间。
CNI 插件进行网络配置:容器运行时会调用 CNI 插件,执行网络配置操作。CNI 插件负责以下任务:
为容器分配 IP 地址。
设置网络接口(如虚拟网卡)。
配置路由表和网络策略。
IPAM 插件分配 IP 地址:CNI 插件通常会使用 IPAM(IP Address Management)插件来为容器分配 IP 地址。IPAM 插件负责管理 IP 地址池,并为每个容器分配唯一的 IP 地址。
启动容器:网络配置完成后,容器运行时启动容器,并将其加入到已配置的网络命名空间中。

(三)CNI 的核心作用

  1. Pod 网络配置

    • 当 Pod 被创建时,CNI 插件会自动为 Pod 分配 IP 地址、配置网络接口(如 veth pair),并确保 Pod 能与集群内其他 Pod、节点或外部网络通信。

    • 当 Pod 被删除时,CNI 插件会释放资源。

  2. 实现 Kubernetes 网络要求

    • Kubernetes 要求所有 Pod 必须能直接通过 IP 地址相互通信(无需 NAT),无论它们是否在同一节点上。CNI 插件负责实现这一目标。

(四)CNI的配置方式

  • CNI 插件通过 JSON 配置文件(通常位于 /etc/cni/net.d/)定义网络规则,例如子网、路由、插件类型等。

(五)常见的常见的 CNI 插件有哪些?

  1. Calico

    • 基于 BGP 协议实现高性能网络,支持网络策略(NetworkPolicy)。

  2. Flannel

    • 简单的 Overlay 网络,使用 VXLAN 或 host-gw 模式。

  3. Cilium

    • 基于 eBPF 技术,提供高性能和高级网络策略。

  4. Weave Net

    • 自动创建 Mesh 网络,支持加密通信。

  5. Amazon VPC CNI

    • 在 AWS EKS 中直接为 Pod 分配 VPC IP 地址。

(六)那么安装Kubernetes 后自带了CNI插件吗?

Kubernetes 本身不提供任何内置的 CNI 插件,但它的网络模型依赖于 CNI 标准。安装 Kubernetes 后,你需要手动安装和配置一个 CNI 插件,否则 Pod 可能无法正常分配 IP 地址或通信。

Kubernetes 默认网络模式(kubenet

  • 如果未安装 CNI 插件,Kubernetes 会使用内置的 kubenet 网络插件,但它的功能非常有限:

    • 仅提供基本的网络连接(依赖节点上的 bridge 和 host-local CNI 插件)。

    • 需要手动配置节点路由,且不支持跨节点网络策略(NetworkPolicy)。

    • 大多数生产环境不会使用 kubenet

(七)Microk8s安装后自带了CNI插件吗?

MicroK8s 默认会自带一个 CNI 插件(具体取决于安装方式和版本),通常是 Flannel 或 Calico,以确保 Pod 网络能正常工作。不过,它的行为可能因不同的安装模式(如 strict 或 classic)而有所不同。

默认情况(非严格模式 / classic
  • MicroK8s 默认启用 flannel 作为 CNI 插件,提供简单的 Overlay 网络(基于 VXLAN)。

  • 安装后,Pod 会自动获得 IP 并支持跨节点通信。

严格模式(strict
  • 如果以 strict 模式安装(如 Ubuntu Core 环境),MicroK8s 默认使用 calico(因其支持网络策略 NetworkPolicy)。

MicroK8s 允许动态启用/禁用不同的 CNI 插件:

# 切换到 Calico
microk8s enable calico# 切换到 Flannel
microk8s enable flannel# 禁用当前插件
microk8s disable <cni-name>

(八)CNI 插件安装在哪儿?

CNI 插件安装在 Node(节点)的主机上,而不是容器内部。它的作用是为主机上的 Pod(容器组)配置网络接口、分配 IP 地址并管理网络连接。

为什么 CNI 插件必须安装在主机上?

  1. 直接操作主机网络

    • CNI 插件需要创建 veth pair、配置网桥(如 cni0)、管理 iptables 规则等,这些操作需在主机网络栈中完成。

  2. Pod 网络初始化时机

    • 当 Pod 启动时,容器运行时(containerd/CRI-O) 会调用 CNI 插件,而容器运行时本身运行在主机上。

  3. 跨节点通信需求

    • CNI 插件需处理节点间的路由(如 Calico 的 BGP 或 Flannel 的 VXLAN),这些功能依赖主机级配置。

CNI 插件的工作流程(以 Pod 创建为例)

  1. kubelet 收到创建 Pod 的请求,通过 CRI 接口通知容器运行时(如 containerd)。

  2. 容器运行时 先创建 Pod 的沙箱环境(pause 容器),然后调用 CNI 插件。

  3. CNI 插件(如 Calico)从 /etc/cni/net.d/ 读取配置,执行以下操作:

    • 创建 veth pair(一端在 Pod 内,一端在主机上)。

    • 为主机端的 veth 分配 IP 并添加到网桥或路由表。

    • 更新 iptables/ebpf 规则(如需网络策略)。

  4. 网络配置完成后,Pod 内的容器共享 pause 容器的网络命名空间,获得网络连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021-11-10 C++蜗牛爬井进3退1求天数

缘由C大一编程题目。-编程语言-CSDN问答 int n 0, t 0;cin >> n;while ((n - 3)>0)n, t;cout << t << endl;

分享一个DeepSeek+自建知识库实现人工智能,智能回答高级用法。

这个是我自己搞的DeepSeek大模型自建知识库相结合到一起实现了更强大的回答问题能力还有智能资源推荐等功能。如果感兴趣的小伙伴可以联系进行聊聊&#xff0c;这个成品已经有了实现了&#xff0c;所以可以融入到你的项目&#xff0c;或者毕设什么的还可以去参加比赛等等。 1.项…

动态规划算法:状态压缩

状态压缩动态规划算法 状态压缩动态规划是动态规划的一种&#xff0c;它通过使用位运算的方式压缩程序占用的空间&#xff0c;对于可以用来解决一些只有两个状态&#xff08;是与否&#xff09;的问题。 多少无益&#xff0c;我们通过下面的一道编程题目来学习这种算法。 题目…

查看matlab函数帮助文档的方法

方法一&#xff1a;在命令行窗口中使用help命令 方法二&#xff1a;在命令行窗口中使用doc命令 方法三&#xff1a;在帮助文档中搜索关键字

MYSQL初阶(暂为自用草稿)

目录 基本操作 database操作 table操作 数据类型 INT类型 bit类型 FLOAT类型 CHAR类型 DATE类型 SEL类型 表的约束 列约束 NULL DEFAULT PRIMARY KEY UNIQUE KEY 表约束 PRIMARY KEY FOREIGN KEY 其他补充 AUTO_INCREMENT COMMENT ZEROFILL 表的CRUD …

MVC/MVVM 高级应用的深度解析

状态共享与同步 跨组件状态管理策略 状态变更的传播机制优化 状态快照与时间旅行调试 状态持久化 本地存储策略 状态序列化与反序列化 与服务端状态同步 数据绑定进阶 双向绑定优化 脏检查机制优化 基于Proxy/Object.defineProperty的实现差异 批量更新策略 自定义…

AI 边缘计算盒子:开启智能物联新时代

一、什么是 AI 边缘计算盒子 AI 边缘计算盒子是一种集成了高性能芯片、AI 算法和数据处理能力的硬件设备。它部署在数据源的边缘侧&#xff0c;如工厂、商场、交通路口等&#xff0c;能够在本地进行数据采集、预处理、分析和决策&#xff0c;而无需将所有数据上传到云端。这种…

LeetCode 5:最长回文子串

1、题目描述 给你一个字符串 s&#xff0c;找到 s 中最长的 回文 子串。 示例 1: 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。 示例 2: 输入&#xff1a;s "cbbd" 输出&#…

简易 Python 爬虫实现,10min可完成带效果源码

目录 准备工作 编写爬虫代码 运行爬虫 查看结果 遇到的问题及解决 总结 前言和效果 本文记录了使用 Python 实现一个简单网页爬虫的过程&#xff0c;目标是爬取 quotes.toscrape.com 的名言和作者&#xff0c;并将结果保存到文本文件。以下是完整步骤&#xff0c;包含环境…

【KWDB 创作者计划】_上位机知识篇---Docker容器

文章目录 前言1. Docker 容器是什么&#xff1f;隔离性轻量级可移植性可复用性 2. Docker 核心概念镜像容器仓库Dockerfile 3. Docker 基本使用(1) 安装 Docker(2) 容器生命周期管理(3) 镜像管理(4) 进入容器内部(5) 数据持久化&#xff08;挂载卷&#xff09;(6) 网络管理 4. …

树莓派练习

1.守护进程 守护进程含义&#xff1a;守护进程在树莓派上电后开始运行&#xff0c;断电后结束运行的进程&#xff0c;即使你的终端退出也不会停止&#xff0c;我们可以手动关闭它 使用nohup创建守护进程 先创建一个c语言文件&#xff08;long_task.c&#xff09; #include …

详细解释浏览器是如何渲染页面的?

渲染流程概述 渲染的目标&#xff1a;将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后&#xff0c;会产生一个渲染任务&#xff0c;并将其传递给渲染主线程的消息队列。在事件循环机制的作用下&#xff0c;渲染主线程取出消息队列中的渲染任务&#xff0…

java+postgresql+swagger-多表关联insert操作(九)

入参为json&#xff0c;然后根据需要对多张表进行操作&#xff1a; 入参格式&#xff1a; {"username": "车主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…

JavaSpring 中使用 Redis

创建项目 配置 Redis 服务地址 创建 Controller 类 由于当前只是些简单的测试代码&#xff0c;所以就不进行分层了&#xff0c;只创建一个 Controller 来实现 jedis 通过 jedis 对象里的各种方法来操作 Redis 此处通过 StringRedisTemplate 来操作 Redis 最原始提供的类是 Re…

AI文生图工具推荐

一、AI文生图技术实现原理 AI文生图&#xff08;Text-to-Image&#xff09;基于生成对抗网络&#xff08;GAN&#xff09;或扩散模型&#xff08;Diffusion Model&#xff09;实现&#xff0c;通过深度学习将文本描述转化为图像。其核心流程包括&#xff1a; 文本编码&#xf…

数据结构——快排和归并排序(非递归)

快速排序和归并排序一般都是用递归来实现的&#xff0c;但是掌握非递归也是很重要的&#xff0c;说不定在面试的时候面试官突然问你快排或者归并非递归实现&#xff0c;递归有时候并不好&#xff0c;在数据量非常大的时候效率就不好&#xff0c;但是使用非递归结果就不一样了&a…

【笔记】网络安全管理

计算机硬件中,运算器和控制器通常集成在一块芯片内,一般称为()。 数据库DB、数据库系统DBS、数据库管理系统DBMS,三者之间的关系是()。 OSI/RM体系结构中的网络层与TCP/IP体系结构中的()功能相同。 三级系统应按照等保2.0要求采用密码技术通信过程中数据的()。 …

.net core web api 数据验证(DataAnnotations)

目录 一、什么是 DataAnnotations&#xff1f; 二、扩展验证逻辑&#xff08;自定义验证器&#xff09; 一、什么是 DataAnnotations&#xff1f; DataAnnotations 是一组特性&#xff08;Attributes&#xff09;&#xff0c;用于在模型类上定义验证规则。主要用于属性级别的…

小白从0学习网站搭建的关键事项和避坑指南

以下是针对小白从零学习网站搭建时需要注意的关键事项和避坑指南&#xff0c;帮助你高效学习、少走弯路&#xff1a; 一、学习路径注意事项 不要跳过基础 误区&#xff1a;直接学习框架&#xff08;如 React、Laravel&#xff09;而忽视 HTML/CSS/JS 基础。 正确做法&#xff…

深入剖析JavaScript内存泄漏:识别、定位与实战解决

在JavaScript的世界里&#xff0c;开发者通常不必像使用C那样手动管理内存的分配和释放&#xff0c;这得益于JavaScript引擎内置的垃圾回收&#xff08;Garbage Collection, GC&#xff09;机制。然而&#xff0c;这并不意味着我们可以完全忽视内存管理。“自动"不等于&qu…