Flannel工作原理
flanneld程序启动会有一个参数叫做-etcd-prefix和-iface。前者是指定flanneld程序使用etcd的哪个节点来存储数据,-face是指定flanneld使用网络是使用宿主机哪个物理接口来做隧道然后你需要通过etcdctl命令来设置flannel的网络数据,我这里设置好的配置如下(我这里之索引用证书是因为我的etcd集群配置了证书):
POD01如果要和POD03通信,POD01会把数据包投递给docker01这个(对于POD01来说docker01这个地址是默认网关),docker0根据路由信息查看目的网段172.30.19.0要走flannel.1,于是把数据包直接投递到flannel.1这个VxLAN设备上,但是这个flannel.1知道数据包的目的地址不是自己所以它也会进行转发,不过flannel.1也不知道目的地址172.30.19.2是谁,通常这个时候会在二层网络上会发起ARP请求来获取目的主机的MAC地址,这里其实也会发送ARP请求不过所不同的是它会将这个ARP请求发送给flanneld这个程序(内核引发一个L3 MISS事件),flanneld程序收到L3 MISS内核事件以及arp请求后,并不会向外网发送arp请求,而是从ETCD数据库中查找与目的地址匹配的子网的vtep信息(flanneld程序中指定的)。下图的信息是自动写入的,因为三台主机安装了flanneld程序。接着上面说flanneld会联系etcd查看172.30.19.0网络匹配的节点,
发现172.30.19.0-24符合,那么获取该节点数据,这样就知道这个网段所在主机的物理IP地址和该主机flannel.1这个虚拟设备的MAC地址(这样就找到对端所在主机了)
下图是srv03的地址信息
获得上述信息后flanneld将信息放到本机的arp表中(通过 apr –n可以查看)
然后就可以封装 数据包了但是这个数据包并不能在物理网络上传输因为这是一个vxlan包里面包含源和目的容器的IP以及源和目的的flannel.1的MAC地址以及vxlan标签;然后进行再次封装这次试用的就源主机物理IP和MAC以及目的主机物理IP和MAC。
数据包到达目的地后如何拆包:对端物理IP所在接口收到数据包后拆包发现vxlan标签,于是将拆包后的数据投递给本机的flannel.1,它再次拆包转交给docker0,最后由docker0投递到POD-03上。POD怎么和外界通信呢?这个就和vxlan没关系了,主要是本机的ipvs或者iptables规则来实现转发的。
Flannel工作原理的更多相关文章
- Kubernetes网络之Flannel工作原理
目录 1.Docker网络模式 1.1 bridge网络的构建过程 1.2 外部访问 2.Kubernetes网络模式 2.1 同一个Pod中容器之间的通信 2.2 不同Pod中容器之间的通信 2.3 ...
- Flannel的VXLAN模式工作原理
跨主机通信的一个解决方案是Flannel,由CoreOS推出,最早支持的是UDP模式,但是因为性能太差被淘汰了, 过时的UDP模式 相比两台宿主机直接通信,多出了flanneld的处理过程,发出IP包 ...
- 【k8s】基础概念 + 工作原理
工作原理: 原理图 工作原理描述: 1>用户通过kubectl或者API server的REST API接口,提交需要运行的docker容器(创建pod请求): 2>api server将 ...
- K8s的工作原理
title: Kubernetes之初探 subtitle: K8s的工作原理 date: 2018-09-18 18:26:37 --- K8s概述 我清晰地记得曾经读到过的一篇博文,上面是这样写的 ...
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- HashMap的工作原理
HashMap的工作原理 HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- ThreadLocal 工作原理、部分源码分析
1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...
随机推荐
- Elasticsearch JavaApi
官网JavaApi地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search.html 博 ...
- 分布式单点登录框架XXL-SSO
<分布式单点登录框架XXL-SSO> 一.简介 1.1 概述 XXL-SSO 是一个分布式单点登录框架.只需要登录一次就可以访问所有相互信任的应用系统. 拥有"轻量级.分布式.跨 ...
- 同一台电脑上配置多个解压版tomcat方法(本例安装两个)
一.在环境变量中设置变量() CATALINA_HOME = tomcat路径一 CATALINA_BASE = tomcat路径一 CATALINA_HOME2 = tomcat路径二 CATALI ...
- Python_mongoDB
''' MogoDB数据库可以到官方网站https://www.mongodb.org/downloads下载,安装之后打开命令提示符环境并切换到MongoDB安装目录总的 server\3.2\bi ...
- Linux下gcc和g++的区别
首先编写了第一个C++程序,Hello,world! #include <iostream> using namespace std; void main() ...{ cout < ...
- Python基础之数据类型、变量、常量
数据类型 整数:任意大小的整数,十六进制用0x前缀 浮点数:浮点数也就是小数,科学计数法1.23x109就是1.23e9,0.000012可以写成1.2e-5 字符串:以单引号'或双引号"括 ...
- SSM-SpringMVC-22:SpringMVC中转发(forward)和重定向(redirect)
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 转发和重定向大家都熟悉,都学到框架了,怎么能不了解转发和重定向呢? 如果有不熟悉的,可以去百度搜几篇博客去看看 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- HQL: The Hibernate Query Language
Chapter 14. HQL: The Hibernate Query Language 14.1. Case Sensitivity 14.2. The from clause 14.3. Ass ...
- safari浏览器模拟ipone,ipad以及其他浏览器版本
1.打开safari浏览器中的偏好设置 2.在偏好设置中,选择高级,勾选在菜单栏中显示开发菜单 3.打开开发,进入响应式设计模式 4.可以选择iphone 或ipad.浏览器等不同模式,进行模拟 5. ...