深入剖析Kubernetes
张磊
Kubernetes社区资深成员与项目维护者
立即订阅
22653 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (5讲)
开篇词 | 打通“容器技术”的任督二脉
免费
01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐
02 | 预习篇 · 小鲸鱼大事记(二):崭露头角
03 | 预习篇 · 小鲸鱼大事记(三):群雄并起
04 | 预习篇 · 小鲸鱼大事记(四):尘埃落定
容器技术概念入门篇 (5讲)
05 | 白话容器基础(一):从进程说开去
06 | 白话容器基础(二):隔离与限制
07 | 白话容器基础(三):深入理解容器镜像
08 | 白话容器基础(四):重新认识Docker容器
09 | 从容器到容器云:谈谈Kubernetes的本质
Kubernetes集群搭建与实践 (3讲)
10 | Kubernetes一键部署利器:kubeadm
11 | 从0到1:搭建一个完整的Kubernetes集群
12 | 牛刀小试:我的第一个容器化应用
容器编排与Kubernetes作业管理 (15讲)
13 | 为什么我们需要Pod?
14 | 深入解析Pod对象(一):基本概念
15 | 深入解析Pod对象(二):使用进阶
16 | 编排其实很简单:谈谈“控制器”模型
17 | 经典PaaS的记忆:作业副本与水平扩展
18 | 深入理解StatefulSet(一):拓扑状态
19 | 深入理解StatefulSet(二):存储状态
20 | 深入理解StatefulSet(三):有状态应用实践
21 | 容器化守护进程的意义:DaemonSet
22 | 撬动离线业务:Job与CronJob
23 | 声明式API与Kubernetes编程范式
24 | 深入解析声明式API(一):API对象的奥秘
25 | 深入解析声明式API(二):编写自定义控制器
26 | 基于角色的权限控制:RBAC
27 | 聪明的微创新:Operator工作原理解读
Kubernetes容器持久化存储 (4讲)
28 | PV、PVC、StorageClass,这些到底在说啥?
29 | PV、PVC体系是不是多此一举?从本地持久化卷谈起
30 | 编写自己的存储插件:FlexVolume与CSI
31 | 容器存储实践:CSI插件编写指南
Kubernetes容器网络 (8讲)
32 | 浅谈容器网络
33 | 深入解析容器跨主机网络
34 | Kubernetes网络模型与CNI网络插件
35 | 解读Kubernetes三层网络方案
36 | 为什么说Kubernetes只有soft multi-tenancy?
37 | 找到容器不容易:Service、DNS与服务发现
38 | 从外界连通Service与Service调试“三板斧”
39 | 谈谈Service与Ingress
Kubernetes作业调度与资源管理 (5讲)
40 | Kubernetes的资源模型与资源管理
41 | 十字路口上的Kubernetes默认调度器
42 | Kubernetes默认调度器调度策略解析
43 | Kubernetes默认调度器的优先级与抢占机制
44 | Kubernetes GPU管理与Device Plugin机制
Kubernetes容器运行时 (3讲)
45 | 幕后英雄:SIG-Node与CRI
46 | 解读 CRI 与 容器运行时
47 | 绝不仅仅是安全:Kata Containers 与 gVisor
Kubernetes容器监控与日志 (3讲)
48 | Prometheus、Metrics Server与Kubernetes监控体系
49 | Custom Metrics: 让Auto Scaling不再“食之无味”
50 | 让日志无处可逃:容器日志收集与管理
再谈开源与社区 (1讲)
51 | 谈谈Kubernetes开源社区和未来走向
答疑文章 (1讲)
52 | 答疑:在问题中解决问题,在思考中产生思考
特别放送 (1讲)
特别放送 | 2019 年,容器技术生态会发生些什么?
结束语 (1讲)
结束语 | Kubernetes:赢开发者赢天下
特别放送 | 云原生应用管理系列 (1讲)
基于 Kubernetes 的云原生应用管理,到底应该怎么做?
深入剖析Kubernetes
登录|注册

35 | 解读Kubernetes三层网络方案

张磊 2018-11-12
你好,我是张磊。今天我和你分享的主题是:解读 Kubernetes 三层网络方案。
在上一篇文章中,我以网桥类型的 Flannel 插件为例,为你讲解了 Kubernetes 里容器网络和 CNI 插件的主要工作原理。不过,除了这种模式之外,还有一种纯三层(Pure Layer 3)网络方案非常值得你注意。其中的典型例子,莫过于 Flannel 的 host-gw 模式和 Calico 项目了。
我们先来看一下 Flannel 的 host-gw 模式。
它的工作原理非常简单,我用一张图就可以和你说清楚。为了方便叙述,接下来我会称这张图为“host-gw 示意图”。
图 1 Flannel host-gw 示意图
假设现在,Node 1 上的 Infra-container-1,要访问 Node 2 上的 Infra-container-2。
当你设置 Flannel 使用 host-gw 模式之后,flanneld 会在宿主机上创建这样一条规则,以 Node 1 为例:
$ ip route
...
10.244.1.0/24 via 10.168.0.3 dev eth0
这条路由规则的含义是:
目的 IP 地址属于 10.244.1.0/24 网段的 IP 包,应该经过本机的 eth0 设备发出去(即:dev eth0);并且,它下一跳地址(next-hop)是 10.168.0.3(即:via 10.168.0.3)。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入剖析Kubernetes》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(32)

  • mazhen
    写了两篇文档:
    Docker单机网络模型动手实验 https://github.com/mz1999/blog/blob/master/docs/docker-network-bridge.md
    Docker跨主机Overlay网络动手实验 https://github.com/mz1999/blog/blob/master/docs/docker-overlay-networks.md
    通过动手实验加深理解容器网络。分享出来希望对小伙伴有所帮助。

    看来学完了这篇,可以再写一个Docker跨主机路由方案动手实验
    2018-11-12
    45
  • blackpiglet
    三层和隧道的异同:
    相同之处是都实现了跨主机容器的三层互通,而且都是通过对目的 MAC 地址的操作来实现的;不同之处是三层通过配置下一条主机的路由规则来实现互通,隧道则是通过通过在 IP 包外再封装一层 MAC 包头来实现。
    三层的优点:少了封包和解包的过程,性能肯定是更高的。
    三层的缺点:需要自己想办法维护路由规则。
    隧道的优点:简单,原因是大部分工作都是由 Linux 内核的模块实现了,应用层面工作量较少。
    隧道的缺点:主要的问题就是性能低。
    2018-11-12
    23
  • 米开朗基杨
    写了篇关于calico开启反射路由模式的文章,希望对大家有所帮助:https://www.yangcs.net/posts/calico-rr/
    2018-11-30
    6
  • 老师你好,问个小白问题,怎么判断集群里的宿主机是否二层互通,或者说怎么实现二层互通?
    2018-11-21
    1
    5
  • 每日都想上班
    架设k8s集群后,对操作系统及网络知识有了一个很好的复习,感谢大神
    2018-11-12
    4
  • 勤劳的小胖子-libo
    所以三层可达,二层不可达的k8s集群不能使用Flannel host-gw模式,只能使用其他模式?
    2018-12-29
    3
  • 峰哥
    老师好,有个1.4的K8S集群,sprincloud的微服务,怎么升级到1.10,是生产环境,有什么好的办法,谢谢

    作者回复: 版本差太远了,升级不了。。

    2018-12-11
    2
  • 虎虎❤️
    三层网络优点: 不需要封包、拆包,传输效率会更高;可以设置复杂的网络策略。
    隧道模式优点: 不需要在主机间的网关中维护容器路由信息,只需要主机有三层网络的连通性即可。
    2018-11-12
    2
  • 羁绊12221
    老师好,flannel UDP 隧道封装的是IP包,vxlan封装的是 二层帧,Calico IPIP模式封装的也是IP包。。感觉上使用隧道通信封装IP报文就够了吧?封装二层帧有什么考虑吗?

    作者回复: 有些网络方案或者硬件,要求必须在二层做一些功能

    2019-08-16
    1
  • 稻草篮儿
    老师你好,根据您的文章对k8s已经有了大致了解,并且已经开始使用,但对于其中网络的相关知识还是模模糊糊(特别是您课程中网络这几章的内容),为此有了想恶补网络知识的想法,老师您对k8s相关网络知识有推荐的书籍或课程吗?
    2018-12-16
    1
    1
  • 陈浩林
    请问,如果是想要静态ip,是不是只能选择calico方案,flannel不行

    作者回复: 都可以,都要改

    2018-11-15
    1
  • 每日都想上班
    碰到一个奇怪的问题,集群中一台master节点重启后,发现docker images 镜像都被清空了一样,然后我重新pull过来,过一会又没有了,这个是哪里问题呢?
    2018-11-13
    1
  • 朱升平
    网络是短板,得多学习学习!
    2018-11-12
    1
  • 再见孙悟空
    凌晨在追,感觉像追剧!嘻嘻
    2018-11-12
    1
  • 知非
    niubi
    2019-12-03
  • davad_dee
    图 1 Flannel host-gw 示意图 第一个路由表中第三条路由 src 192.168.0.2 是否应该是 10.168.0.2
    2019-12-03
  • 游刃
    老师,问一个文中的问题,IP 隧道(IP tunnel)设备和 tun设备有什么区别的,比如Calico ipip模式中的 tunl0设备和 Flannel UDP模式中的 tun0设备?
    2019-11-30
  • 拉欧
    三层网络方案简单易懂,开销小,缺点是需要物理互联,连接节点有限;
    隧道协议更通用,可以打通不同网段,但是开销大,协议复杂,难排错;
    2019-11-23
  • Geek_54edc1
    三层网络方案和“隧道模式”的异同,以及各自的优缺点:三层网络方案要求宿主机二层连通,隧道模式不要求宿主机二层连通;三层网路方案没有封包和解包,性能上比隧道模式要好。
    2019-11-21
  • 拉欧
    三层模式更好理解,但需要两台宿主机可以ping通;
    隧道模式应用更广,但是会有更大的开销,因为需要封装一层协议
    2019-11-17
收起评论
32
返回
顶部