专栏首页乔边故事kubernetes的CNI是什么?

kubernetes的CNI是什么?

在Kubernetes中,并不是用docker0来作为网桥,而是通过一个CNI接口来替代docker0,它在宿主机上的默认名字叫cni0。

以Flannel的vxlan模式为例,其在Kubernetes中的工作流程不变,只是其中的docker0网桥替换为cni0网桥了,其流程如下:

注意:CNI网桥只负责Kubernetes创建的Pod,如果你单独用docker run启动一个容器,其网桥依然是docker0。

Kubernetes中设计一个与docker0相同功能的CNI网桥,其主要原因有以下两点:

  1. Kubernetes没有Docker的网络模型,它并不希望也不具备配置docker0的能力;
  2. 与Kubernetes配置Infra容器的Network Namespace密切相关;

CNI的设计思想即为:Kubernetes在启动Infra容器之后,就可以直接调用CNI网络插件,为这个Infra容器的Network Namespace配置符合预期的网络栈。

CNI中有两个重要的概念:

  • 容器(Container):是拥有独立Linux网络命名空间的环境,例如使用Docker或rkt创建的容器。关键之处是容器需要拥有自己的Linux网络命名空间,这是加入网络的必要条件。
  • 网络(Network):表示可以互连的一组实体,这些实体拥有各自独立、唯一的IP地址,可以是容器、物理机或者其他网络设备(比如路由器)等。

对容器网络的设置和操作都通过插件(Plugin)进行具体实现,CNI插件包括两种类型:CNIPlugin和IPAM(IP Address Management)Plugin。CNI Plugin负责为容器配置网络资源,IPAM Plugin负责对容器的IP地址进行分配和管理。IPAM Plugin作为CNI Plugin的一部分,与CNI Plugin一起工作。

本文分享自微信公众号 - 乔边故事(qiaobiangushi),作者:乔克

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈Go语言中如何进行流程控制

    注意:Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。同理,与else匹配的{也必须与else写在同一行,else也...

    极客运维圈
  • Prometheus是什么?

    Prometheus初是 SoundCloud 构建的开源系统监控和报警工具,是一个独立的开源项目,于2016年加入了 CNCF 基金会,作为继 Kuberne...

    极客运维圈
  • kubeadm搭建高可用集群埋的一些坑

    上一章发布的《kubeadm搭建高可用集群-版本1.18.2》埋了一些坑,本着对观看我文章的读者负责的态度,在这里做了一些整理。

    极客运维圈
  • 一文读懂容器网络发展

    容器技术很火,经常为人所提及,尤其是开源容器工具docker,已在不少数据中心里有广泛应用。容器主要是对软件和其依赖环境的标准化打包,将应用之间相互隔离,并能运...

    SDNLAB
  • 一文读懂容器网络发展

    容器技术很火,经常为人所提及,尤其是开源容器工具docker,已在不少数据中心里有广泛应用。容器主要是对软件和其依赖环境的标准化打包,将应用之间相互隔离,并能运...

    kubernetes中文社区
  • 以 Docker 为代表的传统容器到了生死存亡之际

    当云原生将容器技术作为下一代云计算的基础之一时,并不意味着容器本身停止了演化。事实上,以 Docker 为代表的传统容器在遇到多租户场景时,它的安全问题立刻暴露...

    GitHubDaily
  • 容器堆栈须知的八个要素

    随着容器发展模式逐渐成为主流,容器堆栈本身也在不断发展。现在,企业看到了容器的价值,开发和业务重点正在从引擎转移到增加更多复杂的功能,以便更直接地获得业务收益。...

    SDNLAB
  • 使用Docker容器应该避免的10个事情

    我是攻城师
  • Docker(12)- docker run 命令详解

    这样运行,会直接将容器运行日志打印出来,所以一般都需要加 -d,否则无法继续敲其他命令

    小菠萝测试笔记
  • 容器。。。杀还是不杀

    容器总是有启动脚本,有的时候脚本有bug,从而造成容器的死循环。。。杀还是不杀。。。

    SRE运维实践

扫码关注云+社区

领取腾讯云代金券