Kubernetes面试题整理(持续更新)——网络插件

目录

网络插件相关

熟悉哪些网络插件?各自有什么模式?插件与插件之间,模式与模式之间有什么区别?

网络插件解决了什么问题

模式基本分两种,用了隧道技术和没有使用隧道技术,即覆盖网络方案和路由方案

网络插件在使用方面的差异

云厂商提供的网络插件,有什么优点,解决了什么问题


网络插件相关

熟悉哪些网络插件?各自有什么模式?插件与插件之间,模式与模式之间有什么区别?

这几个问题的核心其实是一样的,解构这个问题,其实面试官关心的是你对于不同的插件/模式的理解,它们是怎么设计的,实现原理是什么,如何选择以提升网络性能即减少传输过程中对性能的损耗,那么你就需要回答出以下几点:

  • 网络插件解决了什么问题

    网络插件本质是为了解决pod的跨节点通信问题

    1. 同一节点的pod间通信通过veth-pair和docker0网桥

    2. pod与公网通信通过iptables的masquerade

    3. pod与service通信通过iptables的nat转换,在iptables的prerouting上截获所有到达主机的数据包,转到docker chain上,docker chain上通过dnat把主机地址切换到container的地址

    4. 跨节点pod通信需要网络插件支持

      K8S 快速入门(五)网络通信原理:Pod网络(上)_男人至死是少年95的博客-CSDN博客_pod网络
  • 模式基本分两种,用了隧道技术和没有使用隧道技术,即覆盖网络方案和路由方案

    flannel有以下模式

    1. utp

      utp模式适用于测试环境或者不支持vxlan的老内核下的操作系统

    2. vxlan

      vxlan模式是flannel的默认模式,它使用一种隧道协议,将二层以太网帧封装在四层UDP报文中,通过三层网络传输,组成一个虚拟大二层网络。报文的流向有如图所示:

      其中,在出向时flannel会对报文进行封装,对端节点的flannel则会解包。在这个转发流程中,flannel能够获得下一跳的ip地址的原理是,flanneld通过和apiserver交互,获得etcd中维护的一张kv表的数据。

    3. host-gateway

      host-gateway模式简而言之就是直接把节点作为网关,但需要基础网络架构的支持,需要在二层网络同一个交换机下才能实现。可以通过在node1上通过ip route查看往pod2 ip网段路由的下一跳(via)是node2的主机ip。

      相比之下,因为少了flanneld的封包解包,host-gateway模式的效率更高

    calico有以下模式

    1. BGP

      BGP模式全称边缘网关协议,是 calico的默认模式,类似于flannel的host-gw

    1. IPIP

      IPIP和vxlan模式类似,是一种将各Node的路由之间做一个tunnel,再把网络连接起来的模式:

      image.png

      简单理解,就是将一个IP数据包套在另一个IP包里,使用到了Linux提供的隧道技术。可以理解为一个基于IP层的网桥,将两个本不通的网络通过点对点连接起来。

    网上很多文章,会讨论flannel和calico的区别,包括一些面试官可能也会问两者区别。但是这是不准确的,因为flannel的vxlan和calico的ipip类似,flannel的host-gw和calico的bgp类似,不能把他们交叉比较,所以其实还是模式和模式的区别,即覆盖网络方案和路由方案的区别:覆盖网络方案采用了隧道封包技术,所以会有一定的性能开销;路由方案基本等同于主机间的通信,但是需要基础网络架构的支持,我们在生产环境中肯定优先考虑高性能的方案。除此之外,不同网络插件在使用方面有一定的差异,我将在下点阐述

  • 网络插件在使用方面的差异

    1. flannel不支持NetworkPolicy

    2. calico的BGP模式可以无缝集成像OpenStack这种IaaS云架构,能够提供可控的VM、容器、裸机之间的IP通信

  • 云厂商提供的网络插件,有什么优点,解决了什么问题

    不同的云厂商都各自实现了网络插件,这些插件基本都是基于calico的BGP模式,但值得注意的是,同样需要网络设备的支持,而阿里云vpc子网内应该是不支持BGP的,因此在云上的环境,云厂商需要针对自家的vpc对calico做一层包装,比如阿里云的Terway和AWS的vpn-cni,它们正是在这样的背景下诞生的,本文以Terway为例,讲述其主要的优点

    1. 启用Terway插件下,SLB后端直接对接Pod,而Flannel插件下SLB后端不能直接对接Pod,需要通过NodePort转发

    2. 启用Terway插件下,Pod地址即为VPC中地址,无NAT损耗支持独占ENI模式,几乎无损

    更具体的区别可以参照以下文档:

    如何使用ACK集群的Terway网络插件_容器服务 ACK-阿里云

值得一提的是,在选取Terway插件时,默认都是不开启NetworkPolicy的,在云上隔离安全限制的最佳实践还是安全组。

参考资料:

K8S 快速入门(五)网络通信原理:Pod网络(上)_男人至死是少年95的博客-CSDN博客_pod网络

基于阿里云Terway网络的Kubernetes集群实践_BGBiao的博客-CSDN博客

K8s网络实战分析之Calico-ipip模式_碰碰猪的博客-CSDN博客_calico ipip

如何使用ACK集群的Terway网络插件_容器服务 ACK-阿里云

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

常鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值