容器跨主机网络-UDP解析

1. 容器跨主机网络的问题

上一节描述了同一宿主机下容器访问宿主机或其他容器的方式,默认docker配置下,不同宿主机之间的容器网络没有任何关联,所以无法做到跨主通信。要解决跨主通信的问题,就需要在已有的主机网络通过软件再构建一个可以把所有容器连通起来的虚拟网络,这个技术就是我们常聊到的overlay network。容器跨主机的访问常用的主流方法有UDP、VXLAN、host-gw

2.UDP模式

UDP因为性能原因目前基本被弃用,但作为最直接也是最容易的实现,其他方案也基本在此方案上进行改造,所以以该方案开始进行解析。

2.1.flannel UDP详解

执行过程如下:

1. consul-0(10.244.3.40)访问consul-2(10.244.2.91),通过cni0网桥出来。此处在容器的网络解析处已经说明,这里不再细述。

2. 由于ip的默认地址是10.244.2.91,在node-3上执行route,匹配到flannel0设备,该设备是一个TUN设备,TUN设备用于在操作系统和用户应用程序之间传递IP包。

3. 当ip包进入flannel0设备后,flannel进程会收到这个ip包,并进行UDP封装,此时flannel进程只收到目标容器位置,怎么准备找到对应的宿主机呢,这里flannel进程会去读取etcd,根据子网key,找到相关宿主机。在上诉图中涉及两个子网(10.244.3.0/24,10.244.2.0/24),每个宿主机的所有容器都会分配至该宿主机所属的子网。

4. UDP封装dst为宿主机172.253.67.150,则意味着找到了目标容器所属的宿主机。而目标端口8285被flannel进程监听,flannel监听到ip包后会解析封装的原ip包。此时确认需要发往目标地点为10.244.2.91.

5. 通过cni0网桥进入容器访问到consul-2。

2.2.flannel UDP性能分析

相比宿主机直接通信,flannel udp模式下通信额外多了flannel的处理、容器与宿主机之间的通信,这里涉及到三次用户态与内核态的数据复制。在linux操作系统中,上下文切换与用户态操作的代价很大。所以在优化上有个很重要的原则,减少用户态到内核态的切换次数。典型的如零拷贝的实现方式。

用户态和内核态的切换
1. containner到cni0网桥
2. cni0网桥到flanneld进程
3. flanneld进程到ens192.

跨主机网络-UDP解析相关推荐

  1. K8S探索之Service+Flannel本机及跨主机网络访问原理详解

    简介 在上篇中,我们部署了我们的应用,但我们访问是直接在应用所在的容器,使用IP+Port的方式直接访问的,style不够k8s,本篇文章我们将使用service和跨主机访问 内容概览 目前我们的应用 ...

  2. [Kubernetes]谈谈容器跨主机网络

    继上篇文章:[Kubernetes]浅谈容器网络,自己给自己挖的坑,这篇文章来谈谈容器跨主机网络. 要理解容器"跨主通信"的原理,就要来谈谈 Flannel 这个项目. Flann ...

  3. Docker 网络模型/overlay 跨主机网络

    之前说了overylay fs,但是运行一个容器进程还需要最后一步,就是它的网络配置. docker本身在创建之初就有自己的网络驱动器,叫container network manager,CNM,本 ...

  4. docker跨主机网络——overlay与macvlan

    docker的跨主机网络 前言 这篇文件分两种方式介绍docker跨主机通信,overlay和macvlan,macvlan的方式给大家做个参考,生产环境下不推荐大家使用这种方式

  5. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  6. 一文说透容器跨主机网络

    文章目录 一.Flannel 1.UDP 2.VXLAN (1)VXLAN核心流程总结 (2)VTEP隧道通信流程详解 [1]封装 inner Ethernet header(依据VTEP IP查MA ...

  7. Docker网络——实现容器间通信、容器与外网通信以及容器的跨主机访问

    前言 自定义网络 建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址.Docker提供了创建这些网络的默认网络驱动程序,你可以创建一个新的Bridge网络,Over ...

  8. docker容器4:docker网络类型+跨主机访问

    文章目录 一.网络类型介绍 1.查看支持网络类型 2.测试使用种类网络类型 3.网络类型设置 3.1 bridge 3.2 host 3.3 none 3.4创建自定义网络 4.Docker跨主机网络 ...

  9. 网络编程_1(网络基础+跨主机传输)

    一.网络基础 知识点回顾: 同一主机间的进程通讯方式: 1.无名管道(亲缘关系间的通讯,固定的读端和写端) 2.有名管道(半双工(因为文件可见,可再次打开交换读端写端),非亲缘关系) 3.信号 4.共 ...

最新文章

  1. wordpress文章发布接口开发
  2. 我可以直接从GitHub运行HTML文件,而不仅仅是查看它们的来源吗?
  3. VS2012及VS系列怎样屏蔽CMD窗口~
  4. Delphi_04_Delphi_Object_Pascal_基本语法_02
  5. JBoss4.2.3部署SSH2
  6. 工具用途_见微知著,小工具大用途!
  7. atoi函数_C语言字符串、数字转换函数大全!
  8. 成都睿铂M6Pros近景摄影测量:西安古城墙数字化建设应用介绍
  9. mysql时间类型英文_英文日期格式及缩写
  10. 草根程序员进入BAT
  11. 计算机显卡升级不符,电脑升级之显卡篇:电脑显卡也有升级需要,但显卡不匹配也用不了...
  12. Toolbar中setNavigationIcon的返回图标太大,图标大小调整解决方法
  13. deepin更新失败_deepin V20 20200826升级失败
  14. pigx框架费用_【开源项目】一篇文章搞掂:Pig微服务框架
  15. 我的世界java边境之地_我的世界边境之地是否存在 我的世界边境之地大揭秘
  16. bat脚本中pause的作用
  17. 【转】互操作性的区块链系统设计理念
  18. PS进阶篇——如何PS软件给公司单位图片加版权水印(六)
  19. 让网页FLASH变成黑白的css语句
  20. matlab 读pdf文件内容,matlab读文件.pdf

热门文章

  1. Linux防火墙增加例外
  2. 高瓴资本领投,国仪量子宣布完成B轮数亿元大笔融资
  3. oracle plsql 使用
  4. IRC/ML:金融智能风控领域相关术语解释(黑灰产群控、风控指标/字段、口径逻辑)、金融智能风控领域九大场景之详细攻略
  5. N皇后问题——Acwing
  6. 几款小众web指纹识别工具源码分析
  7. 显著性测试,p-value/p值
  8. 如何用手机和华为平板控制LED透明屏?方法及功能盘点!
  9. 数字万用表如何测试出三极管的极性
  10. 【每日早报】2019/09/23