二进制部署kubernetes,flannel网络是如何工作的

二进制部署kubernetes时,大多数使用的是推荐的flannel网络插件,但是部署后我们会发现一个问题,kubelet启动没有指定flannel ,我们也没有配置network-plugin,那么kubelet在创建pod时,究竟flannel如何参与容器的网络创建的。从配置中能看到的是flannel启动时,将本节点的网段传递了docker启动参数。docker启动后会以此设置docker0网桥的网段。

网络上很多没有说明具体的原因,有一篇文章倒是有提到。可以参考,但是没有本质解决我的疑问。

其实我们有以下几个疑问:

  1. flannel这个插件的工作原理,为什么network-plugin没有体现flannel, flannel最终实现跨节点的pod通信?
  2. kubelet对network-plugin参数的默认值是多少?针对该配置,对pod的网络流程的影响?

(一)先回答第一个问题:

      flannel在cni中是一个相对于calico等第三方cni比较特殊的一个插件,特殊在哪呢?https://github.com/containernetworking/plugins中也有说明,flannel属于Meta: other plugins类,不能独立工作,需要有Main类支持才可以。而flannel本质是调用Main类中的bridge,这个和docker 默认的NetworkMode是一致的。因此二进制部署的时候,kubelet没有指定flannel相关的配置,pod的网络也配好了,肯定是docker自己配置的。

     所以二进制部署时,pod的Sandbox的网络不是flannel配置的,即创建infra容器,创建veth pair对,插网桥等动作是docker自己完成的。从docker inspect XX也能看到infra容器的NetworkMode配置为bridge。

    所以这种方式部署的pod,其实跨节点通信部署使用了flannel,单节点内的pod网络,并没有flannel的参与!

     (其实,flannel也可以使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值