网络插件

本文详细介绍了Kubernetes中CNI网络插件的工作流程,特别是flannel和calico的原理与区别。flannel通过子网划分和封包转发实现跨节点容器通信,提供UDP和vxlan等模式。calico则基于BGP,实现纯三层网络方案,减少封包解包,提高网络效率。两者在网络策略和性能上有不同的侧重。
摘要由CSDN通过智能技术生成

1、使用CNI网络插件的工作流程

  • Kubernetes 调用CRI创建pause容器,生成对应的network namespace
  • 调用网络driver(因为配置的是CNI,所以会调用CNI相关代码)
  • CNI driver 根据配置调用具体的CNI插件
  • CNI插件给pause容器配置正确的网络,pod中的其他容器都是用pause容器的网络栈。


2、CNI是如何工作的?

  • 基于自带的docker-run.sh 和 exec-plugins.sh两个脚本来看。
  • 简单说就是检查CNI配置文件目录($NETCONFPATH),读取配置(*.conf)文件,然后把配置输入给配置的type字段的插件。
  • 最大的价值在于提供了一致的容器网络操作界面,不论什么网络插件都使用一致的API。

3、flannel

3.1、作用

  • 协助k8s,给每一个node上的docker容器都分配互相不冲突的ip地址;
  • 在这些ip地址之间建立一个覆盖网络,通过这个覆盖网络(overlay)将数据包原封不动的传递到目标容器。
  • 可以为容器提供跨节点网络服务,其模型为集群内所有容器使用一个网络,然后在每个主机上从该网络中划分一个子网。


3.2、解决的问题

  • 解决容器ip地址重复问题
  • 解决容器IP地址路由问题

 3.3、flannel的几种网络模式

  • overlay网络:所有被发送到网络中的数据包会被添加上额外的包头封装,这些包头里通常包含了主机本身的ip地址,因为只有主机ip地址是原本就可以在网络里路由传播的。根据不同的封包方式,flannel提供了udp和vxlan两种传输方法,udp使用了flannel的包头协议,数据是在linux的用户态进行封包和解包,当数据进入主机后,需要经历两次内核态到用户态的转换。vxlan封包是采用内置再linux内核里的标准协议,所有的数据装、解包过程均在内核中完成,overlay是第一种解决容器网络地址路由的方法。
  • Host-Gateway模式:flannel通过再各个节点上运行的agent将容器网络的路由信息刷到主机的路由表上,这样所有的主机就都有整个容器网络的路由数据了。并没有引入封包解包的机制,安全是普通的网络路由机制。然而,只能修改各个主机的路由表,一旦主机之间隔了其他路由设备,比如三层路由器,这个包就会在路由设备上被丢掉。这种模式只能用于二层直接可达的网络,由于广播风暴,通常规模都比较小。

3.4、架构

分为管理面和数据面;管理面主要包含一个etcd,用于协调各个节点上容器分配的网段;数据面主要再每个节点上运行一个flanneld进程。采用no-server ,不存在所谓的控制节点。


3.5、flannel在封包的时候怎么知道目的容器所在主机的IP地址?

flannel会观察etcd的数据,在其他节点向etcd更新网段和主机ip信息时,etcd就感知到了,再向其他主机上的容器转发网络包时,用对方容器所在主机的ip进行封包,然后将数据发往对应主机上的flanneld,再交由其转发给目的容器。

3.6、flanneld启动时要做以下几个动作

  • 从etcd中获取network的配置信息
  • 划分subnet,并在etcd中进行注册
  • 将子网信息记录到flannel维护的/run/flannel/subnet.env 文件中
  • 将subnet.env转写成一个docker的环境变量文件/run/flannel/docker

3.7、backend

flannel通过在每一个节点上启动一个叫flanneld进程,负责每一个节点上的子网划分,并将相关的配置信息保存到etcd中,而具体的网络包转发交给具体的backend实现。
    • UDP:
        ○ flann

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值