加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

Kubernetes研究:图解Kubernetes网络

发布时间:2019-10-24 18:36:04 所属栏目:评测 来源:大数据技术实战
导读:副标题#e# 你一直在Kubernetes集群中运行一系列服务并已从中获益,或者你正打算这么做。尽管有一系列工具能帮助你建立并管理集群,你仍困惑于集群底层是如何工作的,以及出现问题该如何处理。我曾经就是这样的。 诚然Kubernetes对初学者来说已足够易用,但

我们观察了数据包是如何在同一节点上的pod 间和跨节点的 pod 间流动的。我们也注意到了Linux网桥和路由表在这个过程中所扮演的角色。现在我们将进一步阐述这些概念,并阐述Overlay网络是如何工作的。我们也将理解Kubernetes千变万化的Pod是如何从运行的应用中抽象出来,并在幕后处理的。

Overlay 网络Overlay网络不是默认必须的,但是它们在特定场景下非常有用。比如当我们没有足够的IP空间,或者网络无法处理额外路由,抑或当我们需要Overlay提供的某些额外管理特性。一个常见的场景是当云提供商的路由表能处理的路由数是有限制时。例如,AWS路由表最多支持50条路由才不至于影响网络性能。因此如果我们有超过50个Kubernetes节点,AWS路由表将不够。这种情况下,使用Overlay网络将帮到我们。

本质上来说,Overlay就是在跨节点的本地网络上的包中再封装一层包。你可能不想使用Overlay网络,因为它会带来由封装和解封所有报文引起的时延和复杂度开销。通常这是不必要的,因此我们应当在知道为什么我们需要它时才使用它。

为了理解Overlay网络中流量的流向,我们拿Flannel做例子,它是CoreOS 的一个开源项目。

Kubernetes研究之三:图解Kubernetes网络

Kubernetes Node with route table(cross node pod-to-pop Traffic flow with flannel overlay network)这里我们注意到它和之前我们看到的设施是一样的,只是在root netns中新增了一个虚拟的以太网设备,称为flannel0。它是虚拟扩展网络Virtual Extensible LAN(VXLAN)的一种实现,但是在Linux上,它只是另一个网络接口。从pod1到pod4(在不同节点)的数据包的流向类似如下:

1、它由pod1中netns的eth0网口离开,通过vethxxx进入root netns。

2、然后被传到cbr0,cbr0通过发送ARP请求来找到目标地址。

3

  • a、由于本节点上没有Pod拥有pod4的IP地址,因此网桥把数据包发送给了flannel0,因为节点的路由表上flannel0被配成了Pod网段的目标地址。
  • b、flanneld daemon和Kubernetes apiserver或者底层的etcd通信,它知道所有的Pod IP,并且知道它们在哪个节点上。因此Flannel创建了Pod IP和Node IP之间的映射(在用户空间)。flannel0取到这个包,并在其上再用一个UDP包封装起来,该UDP包头部的源和目的IP分别被改成了对应节点的IP,然后发送这个新包到特定的VXLAN端口(通常是8472)。
Kubernetes研究之三:图解Kubernetes网络
  • Packet-in-packet encapsulation(notice the packet is encapsulated from 3c to 6b in previous diagram)尽管这个映射发生在用户空间,真实的封装以及数据的流动发生在内核空间,因此仍然是很快的。
  • c、封装后的包通过eth0发送出去,因为它涉及了节点间的路由流量。

4、包带着节点IP信息作为源和目的地址离开本节点。

5、云提供商的路由表已经知道了如何在节点间发送报文,因此该报文被发送到目标地址node2。

6

  • a、包到达node2的eth0网卡,由于目标端口是特定的VXLAN端口,内核将报文发送给了 flannel0。
  • b、flannel0解封报文,并将其发送到 root 命名空间下。从这里开始,报文的路径和我们之前在Part 1 中看到的非Overlay网络就是一致的了。
  • c、由于IP forwarding开启着,内核按照路由表将报文转发给了cbr0。

7、网桥获取到了包,发送ARP请求,发现目标IP属于vethyyy。

8、包跨过管道对到达pod4。这就是Kubernetes中Overlay网络的工作方式,虽然不同的实现还是会有细微的差别。有个常见的误区是,当我们使用Kubernetes,我们就不得不使用Overlay网路。事实是,这完全依赖于特定场景。因此请确保在确实需要的场景下才使用。在前一部分我们学习了Kubernetes网络的基础知识。现在我们知道了Overlay网络是如何工作的。在下一部分,我们将看到Pod创建和删除过程中网络变化是如何发生的,以及出站和进站流量是如何流动的。

总体而言我对网络概念仍然是个新手,因此我非常期待能得到大家的反馈,特别是某些不清晰或者错误的地方。

Kubernetes研究之三:图解Kubernetes网络

【编辑推荐】

  1. 如何将Kubernetes集群部署在谷歌云平台上?
  2. Kubernetes工作节点的数量规划?
  3. 云原生开发利器,12款Kubernetes开发工具
  4. 为什么说Kubernetes的崛起预示着云原生时代到来?
  5. 清晰明了:Docker的四种网络模式
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读