首页 > 其他分享 >(转)CNI 网络插件

(转)CNI 网络插件

时间:2023-05-16 17:12:25浏览次数:75  
标签:插件 封装 Kubernetes 端口 网络 CNI

原文:https://ranchermanager.docs.rancher.com/zh/faq/container-network-interface-providers

什么是 CNI?

CNI(容器网络接口)是一个云原生计算基金会项目,它包含了一些规范和库,用于编写在 Linux 容器中配置网络接口的一系列插件。CNI 只关注容器的网络连接,并在容器被删除时移除所分配的资源。

Kubernetes 使用 CNI 作为网络提供商和 Kubernetes Pod 网络之间的接口。

CNI Logo

有关更多信息,请访问 CNI GitHub 项目

CNI 使用了哪些网络模型?

CNI 网络插件使用封装网络模型(例如 Virtual Extensible Lan,缩写是 VXLAN)或非封装网络模型(例如 Border Gateway Protocol,缩写是 BGP)来实现网络结构。

什么是封装网络?

此网络模型提供了一个逻辑二层(L2)网络,该网络封装在跨 Kubernetes 集群节点的现有三层(L3)网络拓扑上。使用此模型,你可以为容器提供一个隔离的 L2 网络,而无需分发路由。封装网络带来了少量的处理开销以及由于覆盖封装生成 IP header 造成的 IP 包大小增加。封装信息由 Kubernetes worker 之间的 UDP 端口分发,交换如何访问 MAC 地址的网络控制平面信息。此类网络模型中常用的封装是 VXLAN、Internet 协议安全性 (IPSec) 和 IP-in-IP。

简单来说,这种网络模型在 Kubernetes worker 之间生成了一种扩展网桥,其中连接了 pod。

如果你偏向使用扩展 L2 网桥,则可以选择此网络模型。此网络模型对 Kubernetes worker 的 L3 网络延迟很敏感。如果数据中心位于不同的地理位置,请确保它们之间的延迟较低,以避免最终的网络分段。

使用这种网络模型的 CNI 网络插件包括 Flannel、Canal、Weave 和 Cilium。默认情况下,Calico 不会使用此模型,但你可以对其进行配置。

封装网络

什么是非封装网络?

该网络模型提供了一个 L3 网络,用于在容器之间路由数据包。此模型不会生成隔离的 L2 网络,也不会产生开销。这些好处的代价是,Kubernetes worker 必须管理所需的所有路由分发。该网络模型不使用 IP header 进行封装,而是使用 Kubernetes Worker 之间的网络协议来分发路由信息以实现 Pod 连接,例如 BGP

简而言之,这种网络模型在 Kubernetes worker 之间生成了一种扩展网络路由器,提供了如何连接 Pod 的信息。

如果你偏向使用 L3 网络,则可以选择此网络模型。此模型在操作系统级别为 Kubernetes Worker 动态更新路由。对延迟较不敏感。

使用这种网络模型的 CNI 网络插件包括 Calico 和 Cilium。Cilium 可以使用此模型进行配置,即使这不是默认模式。

非封装网络

Rancher 提供哪些 CNI 插件?

RKE Kubernetes 集群

Rancher 开箱即用地为 RKE Kubernetes 集群提供了几个 CNI 网络插件,分别是 Canal、Flannel、Calico 和 Weave。

如果你使用 Rancher 创建新的 Kubernetes 集群,你可以选择你的 CNI 网络插件。

Canal

Canal Logo

Canal 是一个 CNI 网络插件,它很好地结合了 Flannel 和 Calico 的优点。它让你轻松地将 Calico 和 Flannel 网络部署为统一的网络解决方案,将 Calico 的网络策略执行与 Calico(未封装)和 Flannel(封装)丰富的网络连接选项结合起来。

Canal 是 Rancher 默认的 CNI 网络插件,并采用了 Flannel 和 VXLAN 封装。

Kubernetes Worker 需要打开 UDP 端口 8472 (VXLAN) 和 TCP 端口 9099(健康检查)。如果使用 Wireguard,则需要打开 UDP 端口 51820 和 51821。有关详细信息,请参阅下游集群的端口要求

有关详细信息,请参阅 Canal GitHub 页面

Flannel

Flannel Logo

Flannel 是为 Kubernetes 配置 L3 网络结构的简单方法。Flannel 在每台主机上运行一个名为 flanneld 的二进制 Agent,该 Agent 负责从更大的预配置地址空间中为每台主机分配子网租约。Flannel 通过 Kubernetes API 或直接使用 etcd 来存储网络配置、分配的子网、以及其他辅助数据(例如主机的公共 IP)。数据包使用某种后端机制来转发,默认封装为 VXLAN

默认情况下,封装的流量是不加密的。Flannel 提供了两种加密方案:

  • IPSec:使用 strongSwan 在 Kubernetes worker 之间建立加密的 IPSec 隧道。它是加密的实验性后端。
  • WireGuard:比 strongSwan 更快的替代方案。

Kubernetes Worker 需要打开 UDP 端口 8472 (VXLAN)。有关详细信息,请参阅下游集群的端口要求

Flannel Diagram

有关详细信息,请参阅 Flannel GitHub 页面

Weave

Weave Logo

Weave 在云上的 Kubernetes 集群中启用网络和网络策略。此外,它还支持加密对等节点之间的流量。

Kubernetes worker 需要打开 TCP 端口 6783(控制端口)、UDP 端口 6783 和 UDP 端口 6784(数据端口)。有关详细信息,请参阅下游集群的端口要求

有关详细信息,请参阅以下页面:

RKE2 Kubernetes 集群

Rancher 开箱即用地为 RKE2 Kubernetes 集群提供了几个 CNI 网络插件,分别是 Canal(见上一节)、Calico 和 Cilium。

如果你使用 Rancher 创建新的 Kubernetes 集群,你可以选择你的 CNI 网络插件。

Calico

Calico Logo

Calico 在云上的 Kubernetes 集群中启用网络和网络策略。默认情况下,Calico 使用纯净、未封装的 IP 网络结构和策略引擎为 Kubernetes 工作负载提供网络。工作负载能够使用 BGP 在云上和本地进行通信。

Calico 还提供了一种无状态的 IP-in-IP 或 VXLAN 封装模式。如果需要,你可以使用它。Calico 还支持策略隔离,让你使用高级 ingress 和 egress 策略保护和管理 Kubernetes 工作负载。

如果使用 BGP,Kubernetes Worker 需要打开 TCP 端口 179,如果使用 VXLAN 封装,则需要打开 UDP 端口 4789。另外,使用 Typha 时需要 TCP 端口 5473。有关详细信息,请参阅下游集群的端口要求

标签:插件,封装,Kubernetes,端口,网络,CNI
From: https://www.cnblogs.com/liujiacai/p/17406208.html

相关文章

  • VSCode版本和离线插件不匹配的解决方式
    相信很多人都遇到过这种情况,在内网环境使用VSCode进行开发时,无法在线下载插件,然而没有插件的话使用起来就很不方便,于是我们就需要离线下载插件然后离线安装,但是这又出现一个问题,下载的插件和vscode的版本常常不兼容,那么我们该如何准确找到vscode对应版本的插件呢?一、查看vscode的......
  • Java网络编程----通过实现简易聊天工具来聊聊BIO
    IO模型即输入输出模型,我们今天主要来聊的是java网络编程中的IO模型---BIO模型。BIO即阻塞式IO,BlockingIOblocking[ˈblɒkɪŋ]v. 堵塞;阻塞;堵住(某人的路等);挡住(某人的视线等);妨碍;阻碍;那究竟什么是阻塞呢?这里的阻塞和多线程并发控制中,对未持有锁的线程进行同步阻......
  • PostgreSQL一站式插件推荐 -- pg_enterprise_views
      近日发现PG官方插件列表中新收录了一款插件pg_enterprise_views,因为官方已经数年未添新的插件了很是新奇,找了台设备测试过后果断上了生产,得空分享给大家。  该插件提供了数十张系统表及一个GUI工具,用以监控从操作系统到数据库方方面面的性能情况,并支持对任意时段历史......
  • 字节跳动的网络工程师,是什么神仙存在?
    大家好,我是老杨。要是说起网络工程师的待遇天花板,你觉得会是什么样的?在2022年,互联网大厂虽然裁了很多人,但却刺激了更多人想要进入大厂,一探究竟。就从网工这个岗位来说,你说大小厂的工作内容差距很大,也没有,主要是负责的项目体量是不同的。我之前说过,网工是一个很依赖平台的岗位,你在最......
  • 收藏!网络行业主流的六大技术认证全科普
    大家好,我是老杨。你的年终总结做完了没?还没做完,点击“年终总结”,拿个模板,快速完成。很多人在年末都会有列一个新年愿望清单,写写来年想要完成的事情。不少网工在这两年的就业环境之下,都想着要提升自己,但只有想法,没有什么具体可以落地的方向。今日文章阅读福利:《2023网络工程师考证......
  • 几个jQuery的图片裁剪插件
    项目里最近也要用到图片裁剪插件,刚巧发现了几个就记录在这里。[color=blue][b]imgAreaSelect[/b][/color]官方:[url]http://odyniec.net/projects/imgareaselect/[/url]这个插件是目前比较常见的cooper插件,功能也很齐全:自定义选择框的CSS样式键盘快捷键支持添加事件回调锁......
  • 外汇天眼:网络贷款陷阱重重,两人周转不成倒赔20万
    相信大家一定经常通过网络或短信看到各种贷款广告,宣称可以轻松借到低利率的资金,吸引许多人点击与咨询。然而,这些全都是诈骗集团的陷阱,通常会以信用评估、操作失误、手续费等名义,骗取受害者的个资与钱财。根据台湾刑事局提供的统计数据,截至2023/4/16为止,今年已经有308起相关案件,比......
  • 每日一练 | 网络工程师软考真题 Day1
    1、内存采用段式存储管理有许多优点,但    不是其优点。A.分段是信息逻辑单位,用户不可见B.各段程序的修改互不影响C.地址变换速度快、内存碎片少D.便于多道程序共享主存的某些段2、现有四级指令流水线,分别完成取指、取作的时间依次为数、运算、传送结果四步操作。假设完成上述操......
  • Maven一些有用的插件
    1.resources插件的设置[url]http://marshal.easymorse.com/archives/1216[/url],为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件。默认的主资源文件目录是src......
  • jqMobi插件json格式ActionSheet
    在上一篇中我们学会了ActionSheet的使用,细心的朋友可能会发现其中创建列表的格式是HTML的,代码如下: 1.functionshowCustomHtmlSheet(){2."#afui").actionsheet('<a>Back</a><aοnclick="alert(\'hi\');">ShowAlert3</a><aοnclic......