前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Kubernetes(k8s)-容器网络接口(CNI)介绍

Kubernetes(k8s)-容器网络接口(CNI)介绍

作者头像
运维小路
发布2025-03-07 16:58:29
发布2025-03-07 16:58:29
830
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师。下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们在前面的讲Docker的相关章节的时候,讲过Docker默认创建的的容器都是接入在docker0的网桥上面,而且我们前面Kebernetes安装的时候,无论是Docker版还是Containerd版都并没有单独配置过网桥(甚至Containerd连默认的网桥都没有),只是在安装集群的时候定义容器网路CIDR,那这个容器的的IP地址是从哪里来的呢?

CNI(Container Network Interface)是一个容器网络接口标准,由CoreOS提出,旨在为容器平台提供一种标准的网络配置解决方案。CNI的主要目标是简化容器的网络连接,并使其可插拔,允许容器运行时(如Kubernetes、Docker等)通过插件与各种网络方案集成。

下面是CNI插件的一些基本介绍:

CNI插件的工作原理:

  1. 配置传递:容器运行时在创建容器时,会将容器的网络配置信息传递给CNI插件。
  2. 网络设置:CNI插件根据配置信息为容器设置网络,这通常包括为容器创建网络接口、分配IP地址、设置路由规则等。
  3. 结果回传:CNI插件将网络设置的结果返回给容器运行时,容器运行时再将这些信息保存下来。

常见的CNI插件:

  1. Bridge:这是最基础的CNI插件,用于创建一个Linux网桥,并将容器连接到这个网桥上。
  2. Host-local:用于为容器分配IP地址,通常与Bridge插件配合使用。
  3. Flannel:Flannel是一个用于Kubernetes的网络方案,它可以在集群中的所有节点间建立一个覆盖网络(overlay network)。
  4. Calico:Calico提供了一种基于BGP的网络解决方案,支持多种网络模式,包括非覆盖网络和覆盖网络。
  5. Weave:Weave同样为Kubernetes提供覆盖网络功能,并且支持加密通信。
  6. IPvlan:用于为容器提供IPvlan网络接口。
  7. Macvlan:允许容器拥有独立的MAC地址,可以在物理网络上像物理设备一样工作。

CNI插件的优势:

  • 可插拔性:可以根据需要更换或增加网络插件。
  • 灵活性:支持多种网络模型,可以满足不同的网络需求。
  • 简易性:CNI的设计简单,易于实现和维护。
  • 标准化:遵循CNI标准,可以无缝集成到支持CNI的容器管理平台。

使用CNI插件的步骤:

  1. 安装CNI插件:根据需要选择并安装相应的CNI插件。
  2. 配置CNI:编写CNI配置文件,通常是一个JSON文件,描述如何设置网络。
  3. 集成到容器平台:确保容器平台(如Kubernetes)知道如何调用CNI插件。

CNI插件是容器网络管理的重要组成部分,它们使得容器化应用的网络管理变得更加灵活和强大。随着容器技术的普及,CNI插件将继续发展,支持更多样化的网络需求。

简单点来就是ip创建由CNI插件来负责,至于这个插件是什么Kubernetes其实不关心。Kubernet根据自己的网络插件配置,去读取对应应该配置,然后使用读取到的配置去获取ip接口。至于这个插件是flanneld 还是Calico,其实kubernetes并不关心,也就相当于变相的对网络进行了解耦。在我刚接触kubernetes的时候,曾经手搓过多台Docker主机实现跨主机通信,然后基于此来部署k8s,当然当时CNI还还未普及。下面两个小节我们将介绍我们常用的2个网络插件。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CNI插件的工作原理:
  • 常见的CNI插件:
  • CNI插件的优势:
  • 使用CNI插件的步骤:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档