Kubernetes网络插件

Kubernetes网络模型

IP-per-Pod,每个Pod都拥有一个独立IP地址,Pod内所有容器共享一个网络命名空间

集群内所有Pod都在一个直接连通的扁平网络中,可通过IP直接访问

所有容器之间无需NAT就可以直接互相访问

所有Node和所有容器之间无需NAT就可以直接互相访问

容器自己看到的IP跟其他容器看到的一样

Service cluster IP尽可在集群内部访问,外部请求需要通过NodePort、LoadBalance或者Ingress来访问

官方插件


kubenet:这是一个基于CNI bridge的网络插件(在bridge插件的基础上扩展了port mapping和traffic shaping),是目前推荐的默认插件

CNI:CNI网络插件,需要用户将网络配置放到/etc/cni/net.d目录中,并将CNI插件的二进制文件放入/opt/cni/bin

exec:通过第三方的可执行文件来为容器配置网络,已在v1.6中移除,见kubernetes#39254

Flannel


Flannel是一个为Kubernetes提供overlay network的网络插件,它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络,并借助etcd维护网络的分配情况。

Weave Net


Weave Net是一个多主机容器网络方案,支持去中心化的控制平面,各个host上的wRouter间通过建立Full Mesh的TCP链接,并通过Gossip来同步控制信息。这种方式省去了集中式的K/V Store,能够在一定程度上减低部署的复杂性,Weave将其称为“data centric”,而非RAFT或者Paxos的“algorithm centric”。

数据平面上,Weave通过UDP封装实现L2 Overlay,封装支持两种模式,一种是运行在user space的sleeve mode,另一种是运行在kernal space的 fastpathmode。Sleeve mode通过pcap设备在Linux bridge上截获数据包并由wRouter完成UDP封装,支持对L2 traffic进行加密,还支持Partial Connection,但是性能损失明显。

Fastpath mode即通过OVS的odp封装VxLAN并完成转发,wRouter不直接参与转发,而是通过下发odp 流表的方式控制转发,这种方式可以明显地提升吞吐量,但是不支持加密等高级功能。

Calico


Calico 是一个基于BGP的纯三层的数据中心网络方案(不需要Overlay),并且与OpenStack、Kubernetes、AWS、GCE等IaaS和容器平台都有良好的集成。

Calico在每一个计算节点利用Linux Kernel实现了一个高效的vRouter来负责数据转发,而每个vRouter通过BGP协议负责把自己上运行的workload的路由信息像整个Calico网络内传播——小规模部署可以直接互联,大规模下可通过指定的BGP route reflector来完成。 这样保证最终所有的workload之间的数据流量都是通过IP路由的方式完成互联的。Calico节点组网可以直接利用数据中心的网络结构(无论是L2或者L3),不需要额外的NAT,隧道或者Overlay Network。

此外,Calico基于iptables还提供了丰富而灵活的网络Policy,保证通过各个节点上的ACLs来提供Workload的多租户隔离、安全组以及其他可达性限制等功能。

OVS


https://kubernetes.io/docs/admin/ovs-networking/提供了一种简单的基于OVS的网络配置方法:

每台机器创建一个Linux网桥kbr0,并配置docker使用该网桥(而不是默认的docker0),其子网为10.244.x.0/24

每台机器创建一个OVS网桥obr0,通过veth pair连接kbr0并通过GRE将所有机器互联

开启STP

路由10.244.0.0/16到OVS隧道

OVN


OVN (Open Virtual Network) 是OVS提供的原生虚拟化网络方案,旨在解决传统SDN架构(比如Neutron DVR)的性能问题。

OVN为Kubernetes提供了两种网络方案:

Overaly: 通过ovs overlay连接容器

Underlay: 将VM内的容器连到VM所在的相同网络(开发中)

其中,容器网络的配置是通过OVN的CNI插件来实现。

Contiv


Contiv是思科开源的容器网络方案,主要提供基于Policy的网络管理,并与主流容器编排系统集成。Contiv最主要的优势是直接提供了多租户网络,并支持L2(VLAN), L3(BGP), Overlay (VXLAN)以及思科自家的ACI。

Romana


Romana是Panic Networks在2016年提出的开源项目,旨在借鉴 route aggregation的思路来解决Overlay方案给网络带来的开销。

Open Contrail


OpenContrail是Juniper推出的开源网络虚拟化平台,其商业版本为Contrail。其主要由控制器和vRouter组成:

控制器提供虚拟网络的配置、控制和分析功能

vRouter提供分布式路由,负责虚拟路由器、虚拟网络的建立以及数据转发

其中,vRouter支持三种模式

Kernel vRouter:类似于ovs内核模块

DPDK vRouter:类似于ovs-dpdk

Netronome Agilio Solution (商业产品):支持DPDK, SR-IOV and Express Virtio (XVIO)

Juniper/contrail-kubernetes 提供了Kubernetes的集成,包括两部分:

kubelet network plugin基于kubernetes v1.6已经删除的exec network plugin

kube-network-manager监听kubernetes API,并根据label信息来配置网络策略

Midonet


Midonet是Midokura公司开源的OpenStack网络虚拟化方案。

从组件来看,Midonet以Zookeeper+Cassandra构建分布式数据库存储VPC资源的状态——Network State DB Cluster,并将controller分布在转发设备(包括vswitch和L3 Gateway)本地——Midolman(L3 Gateway上还有quagga bgpd),设备的转发则保留了ovs kernel作为fast datapath。可以看到,Midonet和DragonFlow、OVN一样,在架构的设计上都是沿着OVS-Neutron-Agent的思路,将controller分布到设备本地,并在neutron plugin和设备agent间嵌入自己的资源数据库作为super controller。

从接口来看,NSDB与Neutron间是REST API,Midolman与NSDB间是RPC,这俩没什么好说的。Controller的南向方面,Midolman并没有用OpenFlow和OVSDB,它干掉了user space中的vswitchd和ovsdb-server,直接通过linux netlink机制操作kernel space中的ovs datapath。

其他


ipvs

目前社区还在推https://github.com/kubernetes/kubernetes/issues/17470,预计v1.7可以有alpha版进来。

Canal

Canal是Flannel和Calico联合发布的一个统一网络插件,提供CNI网络插件,并支持network policy。

kuryr-kubernetes

kuryr-kubernetes是OpenStack推出的集成Neutron网络插件,主要包括Controller和CNI插件两部分,并且也提供基于Neutron LBaaS的Service集成。

Cilium

Cilium是一个基于eBPF和XDP的高性能容器网络方案,提供了CNI和CNM插件。

项目主页为https://github.com/cilium/cilium。

kope

kope是一个旨在简化Kubernetes网络配置的项目,支持三种模式:

Layer2:自动为每个Node配置路由

Vxlan:为主机配置vxlan连接,并建立主机和Pod的连接(通过vxlan interface和ARP entry)

ipsec:加密链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容