`
gaojingsong
  • 浏览: 1203037 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Flannel 介绍】

 
阅读更多

Flannel is a simple and easy way to configure a layer 3 network fabric designed for Kubernetes.

 

Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。

 

How it works

Flannel runs a small, single binary agent called flanneld on each host, and is responsible for allocating a subnet lease to each host out of a larger, preconfigured address space. Flannel uses either the Kubernetes API or etcd directly to store the network configuration, the allocated subnets, and any auxiliary data (such as the host's public IP). Packets are forwarded using one of several backend mechanisms including VXLAN and various cloud integrations.

 

Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信,

 

Flannel是CoreOS开发,专门用于docker多机互联的一个工具,让集群中的不同节点主机创建的容器都具有全集群唯一的虚拟ip地址

 

Flannel使用go语言编

Networking details

Platforms like Kubernetes assume that each container (pod) has a unique, routable IP inside the cluster. The advantage of this model is that it removes the port mapping complexities that come from sharing a single host IP.

 

Flannel is responsible for providing a layer 3 IPv4 network between multiple nodes in a cluster. Flannel does not control how containers are networked to the host, only how the traffic is transported between hosts. However, flannel does provide a CNI plugin for Kubernetes and a guidance on integrating with Docker.

 

Flannel is focused on networking. For network policy, other projects such as Calico can be used.

 

 

 

flannel架构介绍

flannel默认使用8285端口作为UDP封装报文的端口,VxLan使用8472端口。



那么一条网络报文是怎么从一个容器发送到另外一个容器的呢?

  1. 容器直接使用目标容器的ip访问,默认通过容器内部的eth0发送出去。
  2. 报文通过veth pair被发送到vethXXX
  3. vethXXX是直接连接到虚拟交换机docker0的,报文通过虚拟bridge docker0发送出去。
  4. 查找路由表,外部容器ip的报文都会转发到flannel0虚拟网卡,这是一个P2P的虚拟网卡,然后报文就被转发到监听在另一端的flanneld
  5. flanneld通过etcd维护了各个节点之间的路由表,把原来的报文UDP封装一层,通过配置的iface发送出去。
  6. 报文通过主机之间的网络找到目标主机。
  7. 报文继续往上,到传输层,交给监听在8285端口的flanneld程序处理。
  8. 数据被解包,然后发送给flannel0虚拟网卡。
  9. 查找路由表,发现对应容器的报文要交给docker0
  10. docker0找到连到自己的容器,把报文发送过去。
  • 大小: 75 KB
分享到:
评论

相关推荐

    flannel网络学习资料.rar

    这本书籍章节深入浅出地介绍了Kubernetes网络的基础概念,包括服务发现、网络模型以及Pod间的通信机制。它会解释为何Kubernetes需要像Flannel这样的网络插件,以及Flannel如何实现Pod的网络隔离和跨节点通信。书中...

    k8s 插件自用flannel-v0.21.5.zip

    下面将详细介绍Flannel及其在Kubernetes中的作用、工作原理和配置方法。 **Flannel简介** Flannel是由CoreOS团队开发的,旨在解决Kubernetes集群中Pod间的网络通信问题。在Kubernetes中,每个Pod都有一个全局唯一的...

    基于ARM架构的flannel-v0.12.0-linux-arm64.tar.gz下载

    这次的分享内容将从Flannel的介绍、工作原理及安装和配置三方面来介绍这个工具的使用方法。 Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络...

    k8s+k8s+pod介绍与网络通讯+配合博文

    4、Flannel介绍 Flannel是k8s的一种网络插件,用于实现跨节点的Pod间通信。它为每个节点分配一个子网,并在节点间建立隧道,使得Pod可以在集群内部自由通信。Flannel提供了多种网络后端,如VXLAN、UDP等,以适应不同...

    基于centos, ubuntu的linux版Flannel-v0.12.0-linux-amd64.tar.gz.zip下载

    这次的分享内容将从Flannel的介绍、工作原理及安装和配置三方面来介绍这个工具的使用方法。 Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络...

    Flannel压缩包

    其次,`README.md` 文件通常包含了项目的详细介绍、安装指南、配置参数以及常见问题解答。在这个压缩包中,README.md可能会详细解释如何在Kubernetes集群中部署和配置Flannel,包括设置环境变量、创建必要的kube-...

    20200422 Rancher Labs解决方案介绍-v1.1.pdf

    20200422 Rancher Labs解决方案介绍-v1.1.pdf

    盘点Kubernetes网络问题的4种解决方案.docx

    **背景介绍:** 在企业级应用中,私有云的部署变得越来越常见。为了在私有云环境中运行Kubernetes+Docker集群,首先需要构建一个满足Kubernetes需求的网络环境。Kubernetes假设所有Pod位于一个可以直接互连的扁平...

    Diving Deep Into Kubernetes Networking.pdf

    书中还探讨了使用Flannel和Calico作为网络解决方案,介绍了它们的架构、安装和如何使用BGP或IP-in-IP技术进行路由公告。此外,还讨论了如何将Flannel和Calico结合使用(即Canal方案),以及如何在Kubernetes中使用...

    Kubernetes容器云平台介绍.pptx

    - **Flannel**:使用 UDP 或其他传输方式进行跨主机通信,每个主机有一个 CIDR,容器间可以直接通信。但存在 IP 浪费和对外服务需要映射到主机 IP 的问题。 - **Calico**:通过 Felix(Calico Agent)实现高度灵活的...

    kubernetes进行二进制安装用到所有文件

    本教程将详细介绍如何通过二进制方式安装Kubernetes,以便于你亲自操作并理解其背后的流程。我们将涉及到以下几个关键知识点: 1. **Kubernetes二进制安装**: 二进制安装是直接下载Kubernetes组件的可执行文件,并...

    Kubernetes介绍 与安装.pdf

    整体而言,Kubernetes的介绍与安装涵盖了从概念理解到实践操作的完整流程,旨在帮助用户从零开始构建和管理一个可扩展的容器化应用程序平台。随着Kubernetes在容器编排领域的广泛使用,它已经成为了云原生应用开发和...

    CentOS 7.5 安装 K8S v1.11.0 集群

    本文将详细介绍如何在 CentOS 7.5 上搭建 K8S v1.11.0 集群。 #### 二、准备工作 在正式安装 K8S 之前,需要做一些准备工作,包括安装 Docker-CE 和 Kubeadm,并进行必要的系统配置。 ##### 1.1 安装 Docker-CE ...

    2、Kubeadm 部署安装 [Unlocked by www.freemypdf.com].pdf

    在本篇文章中,将详细介绍Kubernetes集群使用kubeadm工具部署安装的过程,内容包括kube-proxy开启ipvs的前置条件,Docker的安装,以及kubeadm的主从配置方法。 首先,要开启kube-proxy的ipvs模式,需要满足一定的...

    阿里云开源插件log-pilot(logpilot)搜集k8s部署应用容器内日志—超详细,超全面(带文档和相关软件包)

    本文将详细介绍Log-Pilot的工作原理、配置和使用方法。 **1. Log-Pilot简介** Log-Pilot是阿里云为了应对Kubernetes集群中日志管理的挑战而开发的开源项目。它提供了一种灵活且可扩展的方式来收集和处理容器日志,...

    容器网络介绍.zip

    容器网络介绍 在现代软件开发领域,容器技术已经成为部署和管理应用程序的标准工具,尤其是Docker和Kubernetes等平台的崛起。容器网络是容器技术的重要组成部分,它为容器提供了一个高效、灵活和可移植的网络环境。...

    深度实战Kubeadm全面学习Kubernetes与容器化应用的实际部署与管理.zip

    网盘文件永久链接1_Kubernetes课程介绍.mp42_What is Kubernetes.mp43_Kubernetes整体架构.mp44_Kubernetes环境搭建方式.mp45_Kubeadm部署Kubernetes.mp46_Kubeadm部署Kubernetes环境准备.mp47_Kubeadm部署...

    在CentOS上安装kubernetes详细指南

    - **Master/Node** (172.20.0.113): 包含`kube-apiserver`、`kube-controller-manager`、`kube-scheduler`、`kubelet`、`kube-proxy`、`etcd`以及`flannel`。 - **Node** (172.20.0.114 和 172.20.0.115): 每个节点...

    K8s-cks必备技能攻略

    CNI网络介绍-Flannel: Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VxLAN、Host-GW等数据转发方式。 CNI网络介绍-Calico: ...

    Kubernetes集群环境的搭建

    该文章介绍以手动的方式,搭建Kubernetes容器云集群环境,所谓手动是逐步通过进程的方式来搭建。现在的Kubernetes搭建都很方便,主要通过Kubeadm结合Kubernetes的镜像包来搭建部署,但对很多新手来说,里面细节的...

Global site tag (gtag.js) - Google Analytics