k8s 之7大CNI 网络插件

这篇具有很好参考价值的文章主要介绍了k8s 之7大CNI 网络插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍
网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。
CNI意为容器网络接口,它是一种标准的设计,为了让用户在容器创建或销毁时都能够更容易地配置容器网络。
Kubernetes 它需要网络插件来提供集群内部和集群外部的网络通信。以下是一些常用的 k8s 网络插件:

  • Flannel:Flannel 是最常用的 k8s 网络插件之一,它使用了虚拟网络技术来实现容器之间的通信,支持多种网络后端,如 VXLAN、UDP 和 Host-GW。

  • Calico:Calico 是一种基于 BGP 的网络插件,它使用路由表来路由容器之间的流量,支持多种网络拓扑结构,并提供了安全性和网络策略功能。

  • Canal:Canal 是一个组合了 Flannel 和 Calico 的网络插件,它使用 Flannel 来提供容器之间的通信,同时使用 Calico 来提供网络策略和安全性功能。

  • Weave Net:Weave Net 是一种轻量级的网络插件,它使用虚拟网络技术来为容器提供 IP 地址,并支持多种网络后端,如 VXLAN、UDP 和 TCP/IP,同时还提供了网络策略和安全性功能。

  • Cilium:Cilium 是一种基于 eBPF (Extended Berkeley Packet Filter) 技术的网络插件,它使用 Linux 内核的动态插件来提供网络功能,如路由、负载均衡、安全性和网络策略等。

  • Contiv:Contiv 是一种基于 SDN 技术的网络插件,它提供了多种网络功能,如虚拟网络、网络隔离、负载均衡和安全策略等。

  • Antrea:Antrea 是一种基于 OVS (Open vSwitch) 技术的网络插件,它提供了容器之间的通信、网络策略和安全性等功能,还支持多种网络拓扑结构。

二、CNI 网络插件
CNI(容器网络接口)是一个云原生计算基金会项目,它包含了一些规范和库,用于编写在 Linux 容器中配置网络接口的一系列插件。CNI 只关注容器的网络连接,并在容器被删除时移除所分配的资源。

Kubernetes 使用 CNI 作为网络提供商和 Kubernetes Pod 网络之间的接口。

三、CNI使用的网络模型
CNI 网络插件使用封装网络模型(例如 Virtual Extensible Lan,缩写是 VXLAN)或非封装网络模型(例如 Border Gateway Protocol,缩写是 BGP)来实现网络结构。

1)封装网络
此网络模型提供了一个逻辑二层(L2)网络,该网络封装在跨 Kubernetes 集群节点的现有三层(L3)网络拓扑上。使用此模型,你可以为容器提供一个隔离的 L2 网络,而无需分发路由。封装网络带来了少量的处理开销以及由于覆盖封装生成 IP header 造成的 IP 包大小增加。封装信息由 Kubernetes worker 之间的 UDP 端口分发,交换如何访问 MAC 地址的网络控制平面信息。此类网络模型中常用的封装是 VXLAN、Internet 协议安全性 (IPSec) 和 IP-in-IP。

使用这种网络模型的 CNI 网络插件包括 Flannel、Canal、Weave 和 Cilium。默认情况下,Calico 不会使用此模型,但你可以对其进行配置。

2)非封装网络
该网络模型提供了一个 L3 网络,用于在容器之间路由数据包。此模型不会生成隔离的 L2 网络,也不会产生开销。这些好处的代价是,Kubernetes worker 必须管理所需的所有路由分发。该网络模型不使用 IP header 进行封装,而是使用 Kubernetes Worker 之间的网络协议来分发路由信息以实现 Pod 连接,例如 BGP。

使用这种网络模型的 CNI 网络插件包括 Calico 和 Cilium。Cilium 可以使用此模型进行配置,即使这不是默认模式。

四、CNI 网络插件支持功能对比
k8s部署cni网络插件用哪个好,kubernetes,网络,容器

网络模型:封装或未封装。

路由分发:一种外部网关协议,用于在互联网上交换路由和可达性信息。BGP 可以帮助进行跨集群 pod 之间的网络。此功能对于未封装的 CNI 网络插件是必须的,并且通常由 BGP 完成。如果你想构建跨网段拆分的集群,路由分发是一个很好的功能。

网络策略:Kubernetes 提供了强制执行规则的功能,这些规则决定了哪些 service 可以使用网络策略进行相互通信。这是从 Kubernetes 1.7 起稳定的功能,可以与某些网络插件一起使用。

网格:允许在不同的 Kubernetes 集群间进行 service 之间的网络通信。

外部数据存储:具有此功能的 CNI 网络插件需要一个外部数据存储来存储数据。文章来源地址https://www.toymoban.com/news/detail-781444.html

到了这里,关于k8s 之7大CNI 网络插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8s进阶之网络:pod内不同容器、同节点不同pod通信、CNI插件、不同节点pod通信、Flannel容器网络、Serivce连接外部网络、服务发现、Nginx反向代理与域名、Ingress代理

    Pod是Kubernetes中最小的可部署单元,它是一个或多个紧密关联的容器的组合,这些容器共享同一个网络命名空间和存储卷,因此Pod中的 所有容器都共享相同的网络命名空间和IP地址——PodIP ,所以在同一个Pod内的容器间通信可以 通过localhost直接通信 。 k8s创建Pod时永远都是首先

    2024年02月05日
    浏览(38)
  • K8S集群安全升级(CIS CNI Calico)

    1.1.1 CIS基础 学习目标 这一节,我们从 基准测试、基准手册、小结 三个方面来学习 基准测试 简介 CIS CIS基准 Kubernetes CIS 基准测试 基准手册 简介 K8s CIS手册 小结 1.1.2 测试工具 学习目标 这一节,我们从 工具简介、工具解析、小结 三个方面来学习 工具简介 简介 工具部署 工

    2024年02月12日
    浏览(34)
  • Kubernetes 之7大CNI 网络插件用法和对比

    Kubernetes 它需要网络插件来提供集群内部和集群外部的网络通信。以下是一些常用的 k8s 网络插件: Flannel:Flannel 是最常用的 k8s 网络插件之一,它使用了虚拟网络技术来实现容器之间的通信,支持多种网络后端,如 VXLAN、UDP 和 Host-GW。 Calico:Calico 是一种基于 BGP 的网络插件

    2024年02月06日
    浏览(34)
  • K8S pods not ready,CNI not initialized

    部署完K8S Cluster之后get nodes 发现not ready。 执行describe之后报错如下:    发现是CNI设置问题, 在此describe,发现缺少flannel镜像,所以只要下载flannel镜像就可以了。可以跟着下面这个教程走: 安装 Flannel 报错:network plugin is not ready: cni config uninitialized - 神奇二进制 - 博客园 一

    2024年02月15日
    浏览(30)
  • K8S异常之Unable to update cni config err=no vaild network found in /etc/cni/net.d

    我们在初始化k8s节点的时候,可能会遇到类似如下问题 Unable to update cni config err=no vaild network found in /etc/cni/net.d ,一般表示网络不通。 网上很多方法经过尝试都不好使。最后出现了 /opt/cni/bin/flannel permission denied (无权限读取flannel文件)的异常。 查看kubelet的状态 systemctl sta

    2024年02月17日
    浏览(39)
  • k8s node NotReady:NetworkReady=false reason:NetworkPluginNotReady;cni plugin not initialized

    kubectl获取node节点,集群状态检测时,master、node一直处于NotReady状态 [root@master ~]# kubectl get nodes NAME     STATUS     ROLES           AGE   VERSION master   NotReady   control-plane   27m   v1.26.3 node     NotReady   none          80s   v1.26.3 查看pod状态, 发现coredns一直处于pending状态 [root@

    2024年02月10日
    浏览(33)
  • Kubernetes CNI 插件选型和应用场景探讨

    作者:马伟,青云科技容器顾问,云原生爱好者,目前专注于云原生技术,云原生领域技术栈涉及 Kubernetes、KubeSphere、KubeKey 等。 本文介绍容器环境常见网络应用场景及对应场景的 Kubernetes CNI 插件功能实现。帮助搭建和使用云原生环境的小伙伴快速选择心仪的网络工具。 我

    2024年02月08日
    浏览(28)
  • 云原生之深入解析Kubernetes CNI插件的选型和应用场景

    在学习容器网络的时候,肯定都听说过 Docker 的 bridge 网络、Vethpair、VxLAN 等术语,从 Docker 到 Kubernetes 后,学习 Flannel、Calico 等主流网络插件,分别代表了 Overlay 和 Underlay 的两种网络传输模式,也是很经典的两款 CNI 网络插件。那么,还有哪些好用的 CNI 插件呢 ? 先来看看 C

    2024年02月15日
    浏览(40)
  • k8s搭建集群报错failed to set up sandbox container “xxx“ network for pod “coredns-xxx“:networkPlugin cni fa

    今天在搭建k8s集群时发现coredns一直处于containerCreating状态,如下图所示: 到相应的node节点上查看日志去排查问题: kubectl describe pods -n kube-system coredns-66bff467f8-n7q8f 发现报错的日志如下图: 我的是因为之前部署的时候选择了calico网络插件,这次启动选的是flannel,导致node节点上

    2024年02月16日
    浏览(28)
  • K8S第三讲 Kubernetes集群配置网络插件

    在Kubernetes集群中,网络插件是必需的,因为它们为Pod提供了可访问的IP地址,并确保它们能够相互通信。Kubernetes支持多种网络插件,包括Calico、Flannel、Weave Net等。这里以Calico为例介绍如何配置Kubernetes集群的网络插件。 插件配置可以参考官网: K8S集群网络插件列表 1: 安装

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包