Flannel介绍

2023-05-16

本文个人博客地址:http://www.huweihuang.com/article/flannel/flannel-introduction/

一、flannel是什么(what)

(一)概述

Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。
Flannel官网:https://github.com/coreos/flannel

(二)补充知识点

1、覆盖网络[overlay network]

运行在一个网上的网(应用层网络),并不依靠ip地址来传递消息,而是采用一种映射机制,把ip地址和identifiers做映射来资源定位。

2、路由

互联网是由路由器连接的网络组合而成,路由器按照路由表、路由协议等机制实现对数据包正确地转发,从而到达目标主机。路由器根据数据包中目标主机的IP地址和路由控制表比较得出下一个接收数据的路由器。

1)静态路由:事先设置好路由器和主机中的路由表信息。

这里写图片描述

2)动态路由:让路由协议在运行中自动修改并设置路由表信息。

这里写图片描述

二、为什么使用flannel(why)

在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址。

Flannel的设计目的就是为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得“同属一个内网”且”不重复的”IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。

三、如何实现flannel(how)

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

(一)flannel原理图

这里写图片描述

  1. 数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。
  2. Flannel通过Etcd服务维护了一张节点间的路由表。
  3. 源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直 接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容 器。

(二)实现说明

1、UDP封装

原始数据是在起始节点的Flannel服务上进行UDP封装的,投递到目的节点后就被另一端的Flannel服务还原成了原始的数据包,两边的Docker服务都感觉不到这个过程的存在。 UDP的数据内容部分其实是另一个ICMP(也就是ping命令)的数据包。

这里写图片描述

2、为docker分配不同的IP段

Flannel通过Etcd分配了每个节点可用的IP地址段后,偷偷的修改了Docker的启动参数。

这里写图片描述

注意其中的“–bip=172.17.18.1/24”这个参数,它限制了所在节点容器获得的IP范围。

这个IP范围是由Flannel自动分配的,由Flannel通过保存在Etcd服务中的记录确保它们不会重复。

3、路由规则

1)数据发送节点的路由表

这里写图片描述

2)数据接收节点的路由表

这里写图片描述

例如现在有一个数据包要从IP为172.17.18.2的容器发到IP为172.17.46.2的容器。根据数据发送节点的路由表,它只与 172.17.0.0/16匹配这条记录匹配,因此数据从docker0出来以后就被投递到了flannel0。同理在目标节点,由于投递的地址是一个容 器,因此目的地址一定会落在docker0对于的172.17.46.0/24这个记录上,自然的被投递到了docker0网卡。

(三)flannel的安装与配置

1、安装

wget http://<官网>/flannel/flannel-0.2.0-10.el7.x86_64.rpm
yum localinstall -y flannel-0.2.0-10.el7.x86_64.rpm

2、配置

vi /etc/sysconfig/flanneld

# Flanneld configuration options

# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD="http://127.0.0.1:4001"

# etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_KEY="/my/flannel/product/network"

# Any additional options that you want to pass
FLANNEL_OPTIONS=" -iface=eth0"

3、初始化flannel的etcd配置

etcdctl set /my/flannel/network/config '{
   "Network": "10.0.0.0/16",
   "Backend": {
       "Type": "vxlan"
   }
}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flannel介绍 的相关文章

  • k8s高可用集群 kube-flannel报错,从running-error-CrashLoopBackOff。node“k8s-master-1“podcidr not assigned

    flannel 报错 xff0c 朋友别着急 xff0c 慢慢来 xff0c 看看能不能帮到你 报错信息 xff1a Error registering network failed to acquire lease node k8s ma
  • 记录一次K8s-Flannel插件的坑

    版本 xff1a K8s版本1 17 6 部署方式 xff1a ansible 43 kubeadm部署 架构 xff1a master1 43 node2 43 registry私有仓库 执行kubectl apply f kube fl
  • K8s ❉ node节点未找到cni0/flannel.1网络

    问题描述 xff1a 现有测试环境有3台k8s服务器 xff0c 现在新添加两台服务器 xff0c 发现新加的服务器flannel 1和cni0网卡没有生成 root 64 slave1 ifconfig docker0 flags 61
  • 技术干货|深入理解flannel

    根据官网的描述 xff0c flannel是一个专为kubernetes定制的三层网络解决方案 xff0c 主要用于解决容器的跨主机通信问题 1 概况 首先 xff0c flannel利用Kubernetes API或者etcd用于存储整个
  • K8S Flannel

    1 简介 flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具 它的主要思路是 xff1a 预先留出一个网段 xff0c 每个主机使用其中一部分 xff0c 然后每个容器被分配不同的ip xff1b 让所有的容器
  • 解决k8s无法安装flannel

    手动创建 kube flannel yml文件 span class token punctuation span root 64 k8smaster span class token punctuation span span class
  • k8s——flannel网络

    文章目录 一 Flannel简介二 Flannel网络概述三 部署 一 Flannel简介 1 当一个k8s集群创建好后一般会存在三种IP xff0c 分别是 xff1a Pod IP Node IP Cluster IP Cluster
  • Flannel介绍

    本文个人博客地址 xff1a http www huweihuang com article flannel flannel introduction 一 flannel是什么 xff08 what xff09 xff08 一 xff09
  • open /run/flannel/subnet.env: no such file or directory

    查看pod的信息时发现报错 xff1a open run flannel subnet env no such file or directory 一是查看各个节点 xff0c 包括master 节点是否有 run flannel subn
  • kubernetes flannel pod CrashLoopBackoff解决

    背景 某环境客户部署了一个kubernetes集群 xff0c 发现flannel的pod一直重启 xff0c 始终处于CrashLoopBackOff状态 排查 对于始终CrashLoopBackOff的pod xff0c 一般是应用本身
  • [kubernates]kube-flannel-ds 一直 CrashLoopBackOff

    使用 Kubeadm 安装 K8s 集群 xff0c 在安装 flannel 网络插件后 xff0c 发现 kube flannel ds 一直处于 CrashLoopBackOff 状态 xff1a span class token pu
  • 两个超实用的 Kubernetes 集群中 Flannel 故障排除案例

    自建的 K8s 集群的坑不少 尤其是到了 Node 数量越来越多之后 问题也逐渐显露了出来 博客主要介绍我们使用flannel之后遇到的两个问题以及解决方案 问题其实不严重 只是涉及到了底层的结构 改动时候要小心 问题 1 flannel
  • k8s笔记25--k8s 跨主机网络flannel

    k8s笔记25 k8s 跨主机网络flannel 简介 不同机器上网络设备区别 flannel 网络常见三大后端模式 UDP VXLAN host gw 如何查看集群用哪种网络模式 阿里云flannel容器网络 alloc 参考文档 简介
  • 如何在不禁用firewalld(Kubernetes)的情况下使用Flannel

    我是法兰绒和 K8s 的新手 我正在我的 1 个主节点和 2 个节点集群 由 KVM 创建 上使用它们 我使用 flannel 网络插件初始化了集群 然后我发现我无法访问内部 结果发现可能是我的网络或者DNS进程出了问题 下列的https
  • 使用 192.168.0.0/16 或其他 iprange 作为 kubernetes + flannel 的 pod cidr

    在教程中https kubernetes io docs setup independent create cluster kubeadm https kubernetes io docs setup independent create
  • Kube flannel 处于 CrashLoopBackOff 状态

    我们刚刚开始在 kubernetes 上创建集群 现在我们尝试部署tiller 但出现错误 NetworkPlugin cni 设置 pod 失败 tiller deploy 64c9d747bd br9j7 kube system 网络
  • Kube-Proxy-Windows CrashLoopBackOff

    安装过程 我是 Kubernetes 的新手 目前正在 Azure VM 内设置 Kubernetes 集群 我想部署 Windows 容器 但为了实现此目的 我需要添加 Windows 工作节点 我已经部署了一个具有 3 个主节点和 1
  • 网桥“docker0”在 k8s 和 flannel 中扮演什么角色

    k8s版本 v1 10 4法兰绒版本 v0 10 0docker版本v1 12 6 当我使用命令时brctl show在节点上 如下所示 root node03 tmp brctl show bridge name bridge id ST
  • kubernetes 容器的响应丢失

    我已经在openstack上安装了kubernetes 该设置在 coreos 上有一个主节点和一个节点 我有一个在 UDP 端口 5060 上托管 SIP 应用程序的 pod 并且我已创建服务为NODEPORT在 5060 上 规格 sp
  • 访问 Kubernetes clusterIP 服务请求超时

    我正在寻求帮助来解决这个无法正常工作的基本场景 安装了三个节点kubeadm on VirtualBox 虚拟机在 MacBook 上运行 sudo kubectl get nodes NAME STATUS ROLES AGE VERSI

随机推荐

  • vscode 报错ERROR: Unable to start debugging. Unexpected GDB output from command “-exec-run“

    1 报错信息 Unable to start debugging xff0c 如下截图所示 网上找了很多资料 xff0c 发现大部分解释都说是 xff0c 库的问题 xff0c 拷贝libstdc 43 43 6 dll 文件后 xff0c
  • 关于Ip首部最大长度(60)和最小长度(20)的计算

    第一次写博客 xff0c 可能语言组织的不是特别好 xff0c 因为是个人理解 xff0c 有不正确的地方清指出 关于ip首部长度最大值5字节和60字节的计算 首先声明几个单位 ip数据报中的单位是 位 xff08 代表 32bit xff
  • Dev-C++ 5.11 调试程序 查找程序错误

    相信大家看到我这篇博客的时候还不怎么会用dev c 43 43 调试程序吧 xff0c 那么我就给大家详解一下 xff08 切记 xff1a 要调试的程序一定要能够通过编译 xff0c 一定要通过 xff0c 一定要通过 xff0c 一定要
  • NVM安装与使用

    NVM安装与使用 介绍 nvm是nodejs的版本管理工具 xff0c 可以安装和切换不同的版本nodejs npm是依赖包的管理工具 1 下载NVM GITHUB https github com coreybutler nvm wind
  • maven

    http mvnrepository com 打开网面 xff0c 搜索要查询的jar包名 xff0c 直接复制配制文件到你自己的pom xml中即可 xff0c 如 xff1a lt dependency gt lt groupId gt
  • 密集脚集成块的手工焊接方法

    电子爱好者在进行电子设计制作时 xff0c 最头痛的是焊接密集脚贴片集成块 如 VS1003的焊接 xff0c 往往感到无从下手 下面根据我设计制作时的经验 xff0c 将具体的手工操作方法介绍给大家 xff0c 希望能助你一臂之力 所需辅
  • python批量新建文件、批量保存图片、批量创建文件夹

    python批量新建文件 批量保存图片 批量创建文件夹 新建文件 xff1a 假设我要新建10个txt文件 for i in range 10 这里的 指代的是当前文件夹 i表示文件的名称 f 61 open 39 s 39 i 43 39
  • 操作系统——实验一.进程管理

    include 34 conio h 34 include 34 stdio h 34 include 34 stdlib h 34 struct jincheng type int pid int youxian int daxiao i
  • 计算机中堆栈的概念

    这两天学习win32的API xff0c 了解到了计算机中堆栈的概念 xff0c 相信很多程序员有时候也弄不明白计算机中的堆栈的数据结构 再次为堆栈做一下详细解析 在英文中 xff0c 我们管栈称为stack xff0c 管堆称为heap
  • 使用sqlite3_exec回掉函数输出查询内容

    include lt stdlib h gt include lt stdio h gt include lt sqlite3 h gt int my callback void param int f num char f value c
  • 网络数据传输的三种校验方法

    一 奇偶校验 根据被传输的一组二进制代码的数位中 1 的个数是奇数或偶数来进行校验 采用奇数的称为奇校验 xff0c 反之 xff0c 称为偶校验 采用何种校验是事先规定好的 通常专门设置一个奇偶校验位 xff0c 用它使这组代码中 1 的
  • gcc——预处理(预编译),编译,汇编,链接

    一 xff0c 预编译 操作步骤 xff1a gcc E hello c o hello i 主要作用 xff1a 处理关于 的指令 1 删除 define xff0c 展开所有宏定义 例 define portnumber 3333 2
  • 增大Linux的socket最大连接数(针对select,要编译内核)

    最近接的项目是模拟多个socket 客户端与服务器进行通信 由于Linux 系统的限制 xff0c 在linux include linux posix types h文件中有如下的宏定义 xff1a undef FD SETSIZE de
  • AOSP 源码下载

    版权声明 xff1a 本文为博主原创文章 xff0c 未经博主允许不得转载 https blog csdn net wuxiaolongtongxue article details 85269284 网上关于这块大部分教程都是无效的 xf
  • SIP协议错误代码code大全(中英文对照)

    1 100 Trying 说明caller正在呼叫 xff0c 但还没联系上callee 180 Ringing 说明callee已经被联系上 callee的铃正在响 收到这个信息后 xff0c 等待200 OK 2 181 Call is
  • Ubuntu12.04使用VNC时,不显示图形界面问题的解决

    这个是在Ubuntu上安装vncserver时遇到的问题 xff1a 现有一台ubuntu的机器 xff0c 我在上面使用 sudo apt get install vnc4server 装了vnc服务端 然后运行vncserver xff
  • 蜂鸣器及其原理

    蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器 xff0c 其中压电式蜂鸣器提供一定频率的脉冲信号即可发出声音 xff0c 电磁式蜂鸣器提供电源即可发出声音 蜂鸣器氦分为有源蜂鸣器和无源蜂鸣器 xff08 这里的源不是电源 xff0c 而是蜂鸣器
  • 损失函数Loss相关总结(精细版)

    目录 Loss损失函数的作用 损失函数loss和准确率accuracy的比较 回归任务中的loss主要包括 Loss损失函数的作用 损失函数用来评价模型的
  • NLP中的对抗训练

    目录 一 对抗训练的基本概念 二 NLP中常用对抗训练算法的pytorch版本实现 1 FGM Fast Gradient Method 2 PGD Projected Gradient Descent 3 FreeLB Free Larg
  • Flannel介绍

    本文个人博客地址 xff1a http www huweihuang com article flannel flannel introduction 一 flannel是什么 xff08 what xff09 xff08 一 xff09