Kubernetes容器网络及Flannel插件详解

    1. 容器网络基础

        Kubernetes是一个开源容器调度编排引擎,管理大规模容器化应用,采用典型的Master-Worker主从分布式技术架构,由集中式管理节点(Master Node),分布式的工作节点(Worker Node)组成。向下屏蔽底层差异化的分布式基础设施,以应用为中心构建云计算的基础操作系统能力(即云原生操作系统),面向用户提供云原生时代的云计算的新界面。

        其中,Kubernetes网络至关重要,如果管理节点是控制大脑,运行节点是执行载体,那么网络就是将整个容器集群打通形成一个整体的神经网络;与Docker网络相比,Kubernetes网络最大的特点就是让容器组(Pod)拥有自己的身份证,即独立IP,实现在任何节点上的Pod都可以互相直接通信,而不需要任何的NAT地址转换;在不做限制时,Pod可以访问任何网络,并且拥有独立的网络栈,集群内部可见地址与外部可见地址保持一致。

        在容器网络的具体实现上,Kubernetes通过开放的CNI标准,以插件化方式引入多种容器网络实现,从而支持各种差异化的场景的需求;当前社区比较常见的网络插件主要有Flannel、Calico、Cilium、OVN等,每个插件有不同的模式,需要按照实际的场景来选择使用。按照POD通信方式,有同主机的容器通信与跨主机的容器通信两大类型。

 

  • 同主机的容器通信

        在kubernetes集群的节点上,会创建一个veth(virtual ethernet)虚拟设备,同时将veth一端插入到容器网络的命名空间中,一端连接到主机上的网桥(linux bridge)。这样在同一主机上的POD通过veth实现IP地址相互通信。网桥也会分配一个IP地址,充当从POD到不同节点的出口流量网关。

  • 跨主机的容器通信

在不同主机上运行的容器POD通过IP地址相互通信,需要通过网络插件实现,按照依赖底层的技术大致可以分为Overlay模式,路由模式,Underlay模式三大类:

  • Overlay模式是在二层或三层网络之上再构建起来一个独立的网络,这个网络通常会有自己独立的IP地址空间、交换或者路由的实现。VXLAN协议是目前最流行的Overlay网络隧道协议之一,显著优势就是灵活,对底层网络没有侵入性。
  • 路由模式放弃了跨主机容器在L2的连通性,而专注于通过路由协议提供容器在L3的通信方案;路由模式更易于集成到现在的数据中心的基础设施之上,便捷地连接容器和主机,并在报文过滤和隔离方面有着更好的扩展能力及更精细的控制模型。
  • Underlay模式是借助驱动程序将宿主机的底层网络接口直接暴露给容器使用的一种网络构建技术,较为常见的解决方案有MAC VLAN、IP VLAN和直接路由等。
    1. Flannel网络插件

        Flannel是由go语言开发,是一种基于overlay网络的跨主机容器网络插件。Flannel插件为集群中所有节点重新规划IP地址的分配规则,使得不同节点上的容器能够在同一个子网内,且IP地址不重复,实现不同节点上的容器通过内网IP直接通信。Flannel目前支持udp、vxlan、host-gw、aws-vpc、gce和alloc路由等多种灵活模式。但Flannel缺少必要的安全隔离,Qos等能力,适合常见简单,安全隔离要求较低的场景。以下是Flannel三种模式比较:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值