Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。业界已经有不少不同的网络方案,来满足特定的环境和要求。

CNI(container network interface)是容器网络接口,它是一种标准设计和库,为了让用户在容器创建或者销毁时都能够更容易的配置容器网络。

目前比较流行的CNI插件:Flannel、Calico、Weave、Canal(技术上是多个插件的组合)。这些插件即可以确保满足Kubernetes的网络要求,又能为kubernetes集群管理员提供他们所需的某些特定的网络功能。

背景

容器网络是容器选择连接到其他容器、主机和外部网络(如Internet)的机制。容器的runtime提供了各种网络模式,每种模式都会产生不同的效果。例如,Docker默认情况下可以为容器配置以下网络:

none:将容器添加到一个容器专门的网络堆栈中,没有对外连接。

host:将容器添加到主机的网络堆栈中,没有隔离。

default bridge:默认网络模式。每个容器可以通过IP地址互相连接。

自定义网桥:用户定义的网桥,具有更多的灵活性、隔离性和其他便利功能。

Docker还可以让用户通过其他驱动程序和插件,来配置更高级的网络(包括多主机覆盖网络)。

CNI(https://github.com/containernetworking/cni/blob/master/SPEC.md) 的初衷是创建一个框架,用于在配置或销毁容器时动态配置适当的网络配置和资源。CNI 规范中用于配置网络的插件接口,可以让容器运行时与插件进行协调,具体机制如下:

插件负责为接口配置和管理IP地址,并且同于提供与IP管理、每个容器的IP分配、以及多主机连接相关的功能。

容器运行时会调用网络插件,从而在容器启动时分配IP地址并配置网络策略,并在删除容器时再次调用插件以清理这些资源。

在Kubernetes中,kubelet可以在适当的时间调用插件,来为通过kubelet启动的pod进行自动的网络配置。

术语

VXLAN:代表“虚拟可扩展LAN”。首先,VXLAN用于通过在UDP数据报中封装第2层以太网帧来帮助实现大型云部署。VXLAN虚拟化与VLAN类似,但提供更大的灵活性和功能(VLAN仅限于4096个网络ID)。VXLAN是一种封装和覆盖协议,可在现有网络上运行。

Overlay网络:Overlay网络是建立在现有网络之上的虚拟逻辑网络。Overlay网络通常用于在现有网络之上提供有用的抽象,并分离和保护不同的逻辑网络。

网状网格:网状网络(Mesh network)是指每个节点连接到许多其他节点以协作路由、并实现更大连接的网络。网状网络允许通过多个路径进行路由,从而提供更可靠的网络。网状网格的缺点是每个附加节点都会增加大量开销。

BGP(Border Gateway Protocol):即"边界网关协议",用于管理边缘路由器之间数据包的路由方式。BGP通过考虑可用路径,路由规则和特定网络策略,帮助弄清楚如何将数据包从一个网络发送到另一个网络。

原理

要实现跨虚拟机的容器之间的网络,有几种可能的办法:

容器的IP就是二层网络里分配的IP,这样容器相当于二层网络里的节点,那么就可以天然互访;

容器的IP与node的IP不属于同一个网段,node上配置个到各个网段的路由(指向对应容器网段所部属的node IP),通过路由实现互访[flannel host-gw, calico bgp均是通过此方案实现];

容器的IP与node的IP不属于同一个网段,node上有服务对容器发出的包进行封装,对发给容器的包进行解封。封装后的包通过node所在的网络进行传输。解封后的包通过网桥或路由直接发给容器,即overlay网络。[flannel udp/vxlan,calico ipip,openshift-sdn均通过此方案实现]

CNI 插件

Flannel(只能提供网络通讯,不提供网络策略)

链接:https://github.com/coreos/flannel

由CoreOS开发的项目Flannel,是最直接和最受欢迎的CNI插件。它是容器编排系统中最成熟的网络结构示例之一,旨在实现更好的容器间和主机间网络。

特点:

相对容易安装和配置。它被打包为单个二进制文件flanneld,许多常见的Kubernetes集群部署工具和许多Kubernetes发行版都可以默认安装Flannel。

Flannel可以使用Kubernetes集群的现有etcd集群来使用API存储其状态信息,因此不需要专用的数据存储。

Flannel配置第三层IPv4 overlay网络。它会创建一个大型内部网络,跨越集群中每个节点。在此overlay网络中,每个节点都有一个子网,用于在内部分配IP地址。在配置pod时,每个节点上的Docker桥接口都会为每个新容器分配一个地址。同一主机中的Pod可以使用Docker桥接进行通信,而不同主机上的pod会使用flanneld将其流量封装在UDP数据包中,以便路由到适当的目标。

主要是提供主机和pod之间的网络链接。

Calico

链接:https://github.com/projectcalico/cni-plugin

Calico以其性能、灵活性而闻名。

特点:

Clico的功能更为全面,不仅提供主机和pod之间的网络链接,还涉及网络安全和管理。

Calico CNI插件在CNI框架内封装了Calico的功能。

Calico不使用overlay网络,而是配置第三层网络(网络层,IPv4、IPv6、ICMP)【更底层】。该网络使用BGP路由协议在主机之间路由数据包。这意味着在主机之间传输的时候,不需要将数据包包装在额外的封装层中。传输效率更高,有性能优势。

故障排查更方便。使用calico,标准调试工具可以访问与简单环境中相同的信息,从而使更多开发人员、管理人员更容易理解行为。

具有先进的网络功能:

网络策略

还可以与服务网格Istio集成,

canal

链接:https://github.com/projectcalico/canal

Canal是Flannel和Calico的组合:

网络层用的是Flannel提供的简单overlay,可以在许多不同的部署环境中运行且无需额外的配置。

网络策略方面,Calico强大的网络规则评估,为基础网络提供了更多补充,从而提供了更多安全性和控制。

Weave

链接:https://www.weave.works/oss/net/

weave是Weaveworks提供的一种Kubernetes CNI网络选项。

特点:

智能路由 Weave在集群中的每个节点之间创建overlay网络,参与者可以灵活路由。——Weave可以智能路由。

工作原理:

为了创建网络,weave依赖于网络中每台主机上安装的路由组件。然后,这些路由器交换拓扑信息,以维护可用网络环境的最新试图。 当需要将流量发送到位于不同节点上的pod时,weave路由组件会自动决定是通过"快速数据路径"发送,还是回退到"sleeve"分组转发的方法。

与Calico一样,Weave也为Kubernetes集群提供网络策略功能。

对整个网络的简单加密。Weave可以使用NaCI加密(http://nacl.cr.yp.to)来为sleeve流量自动加密所有路由流量;使用IPsec ESP来加密快速数据路径流量。

详细资料:https://www.sohu.com/a/304555150_618296

这就是微学网-程序员之家为你提供的"k8s CNI插件简单了解"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/11529.html

kubelet配置cni插件_k8s CNI插件简单了解相关推荐

  1. kubelet配置cni插件_从零开始入门 K8s | 理解 CNI 和 CNI 插件

    原标题:从零开始入门 K8s | 理解 CNI 和 CNI 插件 作者 | 溪恒 阿里巴巴高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 26 讲,点击直达课 ...

  2. kubelet配置cni插件_kubernetes网络插件对比分析(flannel、calico、weave)

    本文将在介绍技术原理和相应术语的基础上,再集中探索与详细对比目前最流行的CNI插件: Flannel Calico Weave 介绍 网络架构是Kubernetes中较为复杂.让很多用户头疼的方面之一 ...

  3. kubelet配置cni插件_Kubernetes CNI网络插件

    CNI 容器网络接口,就是在网络解决方案由网络插件提供,这些插件配置容器网络则通过CNI定义的接口来完成,也就是CNI定义的是容器运行环境与网络插件之间的接口规范.这个接口只关心容器的网络连接,在创建 ...

  4. 【图文详细教程】maven3安装配置+eclipse离线安装maven3插件《《唯一成功的教程~~~2018-01-09》》...

    环境搭建前提: 1.电脑上已经安装了1.7以及以上版本的JDK(因为我提供的maven版本是最新的3.3.9的,要求最低JDK1.7) 2.配置好了ecplise并且能正常启动 第一步:下载maven ...

  5. 终端文本编辑神器--Vim命令详解。如何配置使用Vim、Vim插件?

    作者:Mintimate 博客:https://www.mintimate.cn Mintimate's Blog,只为与你分享 文章目录 Vim 发展历史 Vi&Vim Nano&E ...

  6. EOS智能合约开发(十八)从EOS数据分析history_plugin插件和mongo_db_plugin插件区别级EOS网络MongoDB配置

    EOS数据 从EOS上线一段时间来看,他产生的Block已经远远超过了以太坊.以太坊在交易完成后,很容易过滤出交易信息(如何获取交易Hash,在我之前以太坊文章中有详细描述,以太坊爱好者可以参考).E ...

  7. Discuz X3.4 插件创建与插件模板配置简介

    本篇博客将介绍现行Discuz! X3.4软件中插件的概念.插件的工作原理以及如何自己创建新插件或者修改插件模板. 本文内容来自我们团队项目开发过程中对Discuz! X3.4软件的学习理解,博客既是 ...

  8. Endnote文献管理工具 geebinf 插件安装方法及简单的使用

    安装完Endnote后,需要安装geebinf 插件以及各种其他插件.本文以geebinf 插件为例,描述一下安装使用过程. 参引文献国标格式插件的安装 插件下载:下载地址可看文章底部.叫为endno ...

  9. 浅谈C#中一种类插件系统编写的简单方法(插件间、插件宿主间本身不需要通信)...

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 三年多前还在上研时,用C#+反射机制写过插件系统,后来又用M ...

最新文章

  1. 03 基本数据类型、运算符 输入输出
  2. tomcat8 启动项目pom.xml配置
  3. 搬家Testing.
  4. RuntimeError: Found 0 files in subfolders of: ./data/image Supported extensions are: .jpg,.jpeg,.png
  5. java junit测试类怎么写_15.junit测试类使用及注解
  6. 软件破解技术之API替换
  7. css 实现一个尖角_纯CSS实现页面的尖角、小三角、不同方向尖角的方法小结
  8. python爬取腾讯新闻统计数据——新型冠状病毒引发肺炎实况(selenium实现)
  9. SQL Server数据库技术期末大作业 机票预定信息系统
  10. 安卓期末大作业——校园二手街APP设计和实现
  11. 应聘华为各类工程师通信基础题库以及答案(转)
  12. 共享文件服务器设置配额,从windows server的文件服务到分布式文件服务(九):共享文件夹的磁盘配额管理...
  13. 93 Three.js 使用设置normalMap创建更加细致的凹凸和褶皱
  14. 深度学习服务器配置过程
  15. 龙门架式焊接机器人_龙门架式焊接机器人系统设计
  16. 计算机考试屏蔽范围,哪些屏蔽设备可用于计算机机房的电磁屏蔽?
  17. matlab 自适应噪声对消,自适应噪声对消
  18. 从计算机屏幕上抓取动态操作过程 也称为,计算机学业水平考试单项选择题综合训练一 答案复习过程...
  19. UCI银行营销数据集--数据集不平衡
  20. 来自联想维修站的内部发行资料

热门文章

  1. CBK告诉你:民族企业为什么应该走出国门,走向世界
  2. APP进阶实战:最快10分钟接入HUAWEI HiAI有感
  3. 一图读懂HUAWEI HiAI Foundation
  4. PHP 超级模板引擎
  5. ip link 命令总结
  6. 智能排班系统 【开源说明】
  7. 自媒体人必看:自媒体写作4个套路,迅速写出10W+热点爆文
  8. 我与计算机视觉-[CUDA]-[Opencv.Resize的CPU实现和GPU实现]
  9. 使用生成器和多线程为Keras训练模型的fit函数提供数据
  10. saxon 处理xslt