【网络技术】什么是CNI

news2024/12/23 6:34:14

 

序言 

你只管努力,其他交给时间,时间会证明一切。

Never look back unless you are planning to go that way.

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流

1 基础介绍

1.1 概念介绍

CNIContainer Network Interface是一个用于容器网络的规范和接口,它定义了一组标准的API和插件,用于在容器运行时创建、配置和管理网络。

详细一点说,是定义了一组标准接口和数据格式,用于让容器运行时(如Docker、Kubernetes等)与网络插件(如Calico、Flannel、Weave等)进行交互

CNI的设计初衷是为了解决容器网络的多样性和复杂性,使得容器可以灵活地与各种网络环境集成。

CNI规范和接口定义了一组标准的API,包括以下几个主要接口:

  1. add:用于在容器中创建网络接口和配置网络参数。

  2. delete:用于删除容器中的网络接口和清除网络配置。

  3. check:用于检查网络配置是否正确。

  4. version:用于获取CNI插件的版本信息。

CNI插件是实现上述接口的二进制程序,它们可以被容器运行时调用,以实现容器的网络连接和通信。

CNI插件可以通过配置文件的方式进行配置,例如使用JSON格式的配置文件,指定网络类型、IP地址分配、路由等参数。

CNI的优势:是它可以让容器运行在各种不同的网络环境中,而不需要对应用程序进行修改。

CNI插件可以根据不同的网络环境,动态地创建和配置网络接口,使得容器和宿主机可以共享网络资源,并且可以互相通信。

总的来说,CNI是容器网络中一个重要的规范和接口,它可以让容器在各种不同的网络环境中运行,并且可以方便地进行网络管理和配置

2 CNI插件的作用

CNI插件的作用是为容器分配IP地址、配置网络路由、实现网络隔离和安全策略等

它通过调用网络插件提供的接口,将容器连接到网络中。通过使用CNI插件,用户可以为不同的容器选择不同的网络插件,并灵活地配置网络选项。

这使得CNI插件成为了容器网络管理的标准解决方案之一。

CNI组成

CNI插件的架构非常简单,它由三个主要组件组成:

  1. CNI插件二进制文件:CNI插件二进制文件是实际的网络插件,用于管理容器网络。

  2. CNI配置文件:CNI配置文件是用于配置CNI插件的JSON文件,它包括网络参数、IP地址、路由和端口映射等信息。

  3. CNI运行时:CNI运行时是容器运行时调用CNI插件的框架,它根据CNI配置文件中的信息调用对应的CNI插件,并将结果返回给容器运行时。

3 插件举例

这里列举几个常用的CNI插件:

  1. Flannel:Flannel是一个最初由CoreOS开发的CNI插件,它可以为容器提供全覆盖的SDN(Software Defined Networking)网络,支持多种后端网络和数据平面。

  2. Calico:Calico是一个开源的容器网络和安全解决方案,它可以为容器提供高性能、高可靠性的网络连接和安全管理,支持多种网络拓扑和安全策略。

  3. Cilium:Cilium是一个基于eBPF(extended Berkeley Packet Filter)技术的CNI插件,它可以为容器提供高性能的网络连接和安全管理,支持多种网络拓扑和应用层安全策略。

  4. Weave NetWeave Net是一个由Weaveworks开发的CNI插件,它可以为容器提供全覆盖的SDN网络,支持多种后端网络和数据平面,同时还提供了一些高级网络功能,例如多租户网络、跨云网络等。

总的来说,CNI插件提供了一种灵活、可扩展的容器网络管理解决方案,使得用户可以根据自己的需求选择不同的网络插件,并根据需要进行配置和管理。

这些CNI插件都是开源的,并且都可以与主流的容器平台(例如Docker和Kubernetes)集成使用。

它们都具有不同的优势和特点,可以根据具体的场景和需求进行选择和配置。

4 测试

使用ifconfigipping等命令可以测试网络连接和IP地址分配是否正确。以下是一些常用的命令及其用法:

ifconfig命令

ifconfig命令可以显示和配置网络接口的信息。运行命令ifconfig可以列出所有的网络接口及其IP地址、MAC地址、网络状态等信息。例如:

  • apache
  • Copy
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 52:54:00:12:34:56  txqueuelen 1000  (Ethernet)
        RX packets 499  bytes 98341 (96.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 270  bytes 30653 (29.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
```

上述命令输出了eth0接口的IP地址、子网掩码、广播地址、MAC地址等信息。可以通过修改网络配置文件或使用ifconfig命令来配置和管理网络接口。

ip命令 

ip命令是Linux系统中一个更加强大和灵活的网络管理工具,可以用来显示和配置网络接口、路由、ARP表等信息。

例如,运行命令ip addr show可以列出所有网络接口的IP地址和状态信息。运行命令ip route show可以列出当前的路由表。例如:

  • apache
  • Copy
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 86296sec preferred_lft 86296sec
    inet6 fe80::5054:ff:fe12:3456/64 scope link
       valid_lft forever preferred_lft forever
```

上述命令输出了lo和eth0接口的IP地址和状态信息。可以通过修改网络配置文件或使用ip命令来配置和管理网络接口。

ping命令

ping命令可以测试网络连接是否正常

例如,运行命令ping 8.8.8.8可以测试与Google公共DNS服务器的网络连接是否正常。

例如:

  • basic
  • Copy
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=5.24 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=5.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=117 time=5.20 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 5.203/5.247/5.303/0.051 ms
```

上述命令输出了与Google公共DNS服务器的三次ping操作的结果。可以根据ping命令的输出来判断网络连接是否正常。

总的来说,ifconfig、ip、ping等命令是Linux系统中常用的网络管理和测试命令,可以用来测试网络连接和IP地址分配是否正确。可以根据具体的测试需求和网络配置来选择适当的命令和参数。

粉丝福利

图书介绍

书名:元宇宙Ⅱ:图解元技术区块链、元资产与Web3.0、元人与理想国(全三册)

这是一个全新的时代:Web3.0构建的经济体系,DID身份的跨平台操作,数字NFT的原子级镜像,以及DeFi的无摩擦元资产再分配......2022年,奇点出现:元人即将诞生;元资产即将分配;元宇宙正在成形。

本套书通过元宇宙三大定律、大统一方程、熵增定律、Web3.0、万亿元资产、元人与区块链文明构建了元宇宙第一大楼。

第1-80层:数字人展位、电子宠物、数字藏品、3D沉侵式旅游、DeFi。

第81-160层:AI、VR、AR、MR、DAO、Web3.0、边缘计算。

第161-214+层:多场景阅读、4K空间、跨链许可、维度转换、无限∞世界。

作者简介

量子学派,是一个专注于自然科学领域(数理哲)的教育平台,其公众号“量子学派”发布的自然科学类文章阅读量大都是10万+,全国十大科普教育平台。

平台推出了一系列深受广大读者好评的课程,包括《数学之美》《逻辑之美》《理性之美》《科学之美》等。

罗金海,全国十大科普教育平台《量子学派》主编,2140元宇宙发起人,文津图书奖《公式之美》作者,专注于自然科学和逻辑理性知识科普。

国家级技术中心工程师、南方报业2009年度记者。著有《落脚之城》《人人都懂区块链》《公式之美》《元宇宙》等著作。

 迫不及待的小伙伴也可以访问下面的链接了解详情:

 链接:《元宇宙2(全三册:图解元技术区块链、元资产与Web 3.0、元人与理想国)

更多优惠活动:

世界读书日“又是阅读好时节”,北京大学出版社图书,优惠活动特别延长通知:
1. 当当:参与活动的图书持续到月底4月30日;
2. 京东:参与活动的图书持续到月底4月30日;5.4-5.7 也有部分图书有优惠活动。

参与方式 

数量3 本   !!!
活动时间:截止到 2023-05-06 12:00:00

抽奖方式

  • 1套,送给留言点赞最多的小伙伴
  • 2套利用程序进行抽奖, 评论区抽2位小伙伴送书

参与方式关注博主点赞收藏,评论区留言 

留言内容:"人生是一场消耗,要把美好的时光放在喜欢的人与事上。"

中奖名单 

🍓 获奖名单🍓

 中奖名单:请关注博主动态

名单公布时间:2023-05-06 15:30:00

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

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

相关文章

2023年第十五届华中杯赛题A题详细版思路 新型镇静药物临床实验疗效分析与预测

2023年五一假期期间&#xff0c;数学建模竞赛就有四场&#xff0c;各种比赛各种需求应接不暇。因此&#xff0c;对于本次浅析有不足的地方欢迎大家指出。为了更好的帮助大家华中杯参赛&#xff0c;下面带来&#xff0c;A题详细版思路 问题一&#xff0c;差异性分析 文字分析&a…

JAVA基于Springboot框架的停车场管理系统开发实践和实现【附源码】

运行环境: jdk1.8idea/eclipsemaven3mysql5.6 项目技术: Java,Springboot,mybatis,mysql,jquery,html 该系统为停车场管理人员提供了对停车场中车辆&#xff0c;车位和财务的管理。操作员可以灵活地使用相关权限开展工作。在车位管理&#xff0c;车辆的停放和驶离、缴费&a…

理解Hopcroft DFA最小化算法

问题引入 在构造编译器的Scanner时&#xff0c;常见的解决方法是使用自动机技术。从文法构造出的DFA的状态数过多会影响编译器的性能。DFA中有一些状态本质上是等价的&#xff0c;我们需要一种自动化算法用于最小化DFA。 算法介绍 常见的DFA最小化算法有三种&#xff0c;分别…

栈和队列的转换

在之前的博客当中我们已经学习了栈和队列。在本次的博客当中我们就来学习一下怎么将栈和队列进行相互转换。 栈和队列的相互转换其实是两道OJ题。如果在leetcode上面刷过题的小伙伴们可能早就见过这两种数据结构的相互转换。下面我们就来分别讲解一下这两道OJ题目的编写思路。 …

为生信写的Python简明教程 | 视频2

开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在&#xff1a;https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…

改进YOLOv8 | 即插即用篇 | CVPR2023最新注意力 | 《BiFormer:视觉变换器与双层路由注意力》

作为视觉变换器的核心构建模块,注意力是一种强大的工具,可以捕捉长程依赖关系。然而,这种强大的功能付出了代价:计算负担和内存占用巨大,因为需要在所有空间位置上计算成对的令牌交互。一系列的研究尝试通过引入手工制作和与内容无关的稀疏性来缓解这个问题,例如将注意力…

【技术分享】防止根据IP查域名,防止源站IP泄露

有的人设置了禁止 IP 访问网站&#xff0c;但是别人用 https://ip 的形式&#xff0c;会跳到你服务器所绑定的一个域名网站上 直接通过 https://IP, 访问网站&#xff0c;会出现“您的连接不是私密连接”&#xff0c;然后点高级&#xff0c;会出现“继续前往 IP”&#xff0c;…

81. read readline readlines 读取文件的三种方法

81. read readline readlines 读取文件的三种方法 文章目录 81. read readline readlines 读取文件的三种方法1. 读取文件的三种方法2. read方法3. readline方法4. readlines方法5. 代码总结5.1 read方法读取全部内容5.2 readline方法读取一行&#xff0c;返回字符串5.3 readli…

stable diffusion的使用

文章目录 1 文生图1.1 mountains and trees and gree1.2 three dogs1.3 cats1.4 three lovely cats1.5 beautiful girl1.6 机器猫1.7 卡通图像生成 1 文生图 1.1 mountains and trees and gree 1.2 three dogs 1.3 cats 1.4 three lovely cats 1.5 beautiful girl stable diff…

CRN Camera Radar Net for Accurate, Robust, Efficient 3D Perception

这是发表在ICLR2023 workshop on Scene Representations for Autonomous Driving上的文章&#xff0c;目前在nuScenes的cameraRadar的3D目标检测赛道上刷到了第一&#xff0c;非常值得一看 一、创新点和贡献 采用了一种两阶段的融合思路&#xff1a; 采用radar-assistant-vie…

【AI工具】bing chat 使用--三种模式+撰写功能

bing chat:三种模式撰写功能 以下为点击复制后粘贴的内容 Bing Chat提供三种对话模式可选择&#xff1a;创造力、平衡和精确。更多创造力&#xff08;Creative&#xff09;&#xff1a;Bing Chat回答的内容将带有更多语气和情绪&#xff0c;更像一个真实的人类与用户对话。更多…

如何实现倾斜摄影三维模型数据裁剪和轻量化一体化处理?

如何实现倾斜摄影三维模型数据裁剪和轻量化一体化处理&#xff1f; 随着数字地球和数字城市的发展&#xff0c;倾斜摄影三维模型成为了重要的数据形式。然而&#xff0c;由于数据量大&#xff0c;处理难度大等问题&#xff0c;如何实现倾斜摄影三维模型数据裁剪和轻量化一体化处…

ChatGPT提示词工程(二):Iterative迭代

目录 一、说明二、安装环境三、Iterative第一次写Prompt第二次写Prompt第三次写Prompt第四次写Prompt第五次写Prompt 四、总结 一、说明 这是吴恩达 《ChatGPT Prompt Engineering for Developers》 的课程笔记系列。 本文是第三讲的内容&#xff1a;Iterative 课程主讲&#…

RabbitMQ 发布订阅模式,routing路由模式,topic模式

发布订阅模式 一个消息可以由多个消费者消费同一个消息 消费者1和2同时消费了该消息 举例 public static void main(String[] args) throws IOException, TimeoutException {//1 创建连接工厂ConnectionFactory connectionFactorynew ConnectionFactory();//2 设置rabbitmq …

机器学习与深度学习——通过knn算法分类鸢尾花数据集iris求出错误率并进行可视化

什么是knn算法&#xff1f; KNN算法是一种基于实例的机器学习算法&#xff0c;其全称为K-最近邻算法&#xff08;K-Nearest Neighbors Algorithm&#xff09;。它是一种简单但非常有效的分类和回归算法。 该算法的基本思想是&#xff1a;对于一个新的输入样本&#xff0c;通过…

Preftest测试

Preftest测试 Perftest 是一组基于uverbs编写的测试程序&#xff0c;是RDMA性能相关的micro-benchmark。可用于软硬件调优以及功能测试。 Perfest支持的测试 源码位置 linux-rdma/perftest: Infiniband Verbs Performance Tests (github.com) 安装 直接安装preftest sudo …

Flink作业任务的9种状态简单介绍

​ 当创建一个Flink任务后&#xff0c;该任务可能会经历多种状态。目前Flink给任务共定义了9种状态&#xff0c;包括&#xff1a;Created&#xff0c;Running&#xff0c;Finished&#xff0c;Cancelling&#xff0c;Canceled&#xff0c;Restarting&#xff0c;Failing&#x…

类加载器和双亲委派模型面试总结

类的生命周期和类加载的过程 在了解类加载器之前&#xff0c;我们先来了解一下一个类的生命周期和类加载的过程。 一个类完整的生命周期包括 加载、验证、准备、解析、初始化、使用和卸载&#xff0c;一共7个阶段。 类加载过程包括&#xff0c;加载、连接和初始化&#xff0…

腾讯云镜YunJing——Agent定时任务脚本分析

缘起 如果你有台腾讯云主机&#xff0c;会发现默认有个叫 YunJing 的进程。 把它kill掉后&#xff0c;发现一段时间又出现了 这是为什么捏&#xff1f; 分析定时任务配置文件 通过crontab定时任务目录, 会发现有个叫yunjing的配置文件。 */30 * * * * root /usr/local/qc…

PCIe物理层详细总结-PCIE专题知识(一)

目录 一、简介二、PCIe物理层结构及功能2.1 PCIe端对端连接方式2.2 PCIe组成2.2.1 逻辑层(Logic)1 发送逻辑2 接收逻辑 2.2.2 电气层(Electrical)1 物理层-电气(Physical Layer Electrical)2 数据传送----差分方式 2.2.3 PLP介绍 三、其他相关链接1、PCI总线及发展历程总结 一、…