首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏CNCF

    CNI项目

    名称:CNI 类型:网络API 说明:CNI(容器网络接口)是一个云原生计算基基金会项目,由规范和软件库组成,用于编写插件配置Linux容器中的网络接口,以及许多受支持的插件。 CNI仅关注容器的网络连接,并在容器删除时清除已分配的资源。由于这一重点,CNI具有广泛的支持,并且规范易于实现。 网站/代码: https://github.com/containernetworking 文档: https://github.com/containernetworking/cni 错误和功能请求: :https://cryptic-tundra-43194.herokuapp.com/ 邮件列表: cni-dev(https://groups.google.com/forum/#! forum/cni-dev) 订阅邮件列表,也可以发电邮到: cni-dev+subscribe@googlegroups.com

    75310发布于 2019-12-06
  • 来自专栏云计算与大数据

    cni| docker | calicoctl | etcd

    As we know the cluster members, their addresses and the size of the cluster before starting, we can use an offline bootstrap configuration by setting the initial-cluster flag. Each machine will get either the following environment variables or command line:

    49220编辑于 2022-04-18
  • 来自专栏sealyun

    CNI到OVN

    本文重点讲网络这块,ovn ovs怎么与kubernetes擦出火花 CNI原理简述 CNI不是本文的重点,这里仅做一下简单的介绍更多详情 CNI很简单,本质就是你实现一个命令行工具,kubelet初始化网络时会去调用这个工具 " EnvCNIArgs = "CNI_ARGS" EnvCNIIfname = "CNI_IFNAME" # 网卡名 DefaultNetDir = "/etc/cni/net.d 那比如想拿到pod的一些元数据怎么办,典型场景是比如pod yaml里定义了属于哪个子网啥的,对不起CNI不传给你,你得拿着podid去apiserver里查,这是一个非常不爽的地方,所以现在ovn的CNI 都有一个CNI server的东西去和apiserver交互。 对接 ovn ovs与CNI对接包含两个部分,CNI插件仅需要把容器的设备对一端挂载到ovs网桥上然后配置好地址,与逻辑端口做好映射.

    2K30发布于 2019-07-25
  • 来自专栏锅总

    Kubernetes之CNI详解

    本文尝试从Kubernetes CNI 历史、工作原理及伪代码实现3个方面对CNI进行详细介绍;最后列举CNI常见开源实现及其优缺点。希望对您有用! CNI规范的核心设计原则包括: 插件化:CNI本身只是一个接口规范,具体的网络实现由各类CNI插件提供。 简单性:CNI接口尽量简单,只关注容器的网络创建和删除。 主要的CNI插件发展 随着CNI的普及,出现了许多流行的CNI插件,每种插件都有其独特的功能和适用场景。 CNI插件详细工作步骤 CNI配置文件:每个节点上都有一个CNI配置文件(通常位于/etc/cni/net.d目录下),定义了CNI插件的类型和配置。 调用CNI插件: 在容器创建过程中,Kubelet根据CNI配置文件调用相应的CNI插件。 CNI插件在宿主机和容器网络命名空间中创建veth对。

    1.6K11编辑于 2024-06-26
  • 来自专栏01ZOO

    扩展 Kubernetes 之 CNI

    Plugin 处于什么位置 [image] CNI/CNI Plugins CNI 项目包括两个部分 The CNI specification documents 即 上面说的 CNI 的部分 libcni ADD 操作不会执行两次(对于同样的 KEY-network name, CNI_CONTAINERID, CNI_IFNAME) CNI 的执行流程 基本操作: ADD, DEL, CHECK and plugin 在机器上准备 cni 配置和 网桥 (这一步实践也可以在 cni plugin 中 ensure) brctl addbr cni0;ip link set cni0 up; ip addr add <bridge-ip>/24 dev cni0 安装 nmap 和 jq bash-cni 脚本,完整脚本参考自 bash-cni #! commandn: $CNI_COMMAND" exit 1 ;; esac 使用 cni-tool 测试 $ ip netns add testing $ CNI_PATH=/opt/cni

    3.6K440发布于 2020-02-02
  • 来自专栏云计算与大数据

    cni | 配置浅薄认识

    它加载此目录中的所有 CNI 配置文件,如果它找到具有为 cnitool 指定的网络名称的 CNI 配置,则返回相应的 CNI 配置,否则返回 nil。 CNI_PATH: For a given CNI configuration cnitool will search for the corresponding CNI plugin in this CNI_PATH:对于给定的CNI配置,cnitool将在此路径中搜索相应的CNI插件。 CNI_PATH 创建网络空间 sudo ip netns add testing 在指定命名空间创建网络,名称为myptp CNI_PATH="/opt/cni/bin/" . =ADD CNI_CONTAINERID=1234567890 CNI_NETNS=/var/run/netns/testing CNI_IFNAME=eth12 CNI_PATH="/opt/cni/

    1.2K10编辑于 2022-04-18
  • 来自专栏sealyun

    CNI 小精灵 GENIE

    想同时使用多个CNI? 想往容器里塞多张网卡? 试试这款CNI插件 CNI-Genie genie可以引用CNI插件,包含默认CNI插件如(bridge macvlan ipvlan loopback)第三方插件如 calico,romana,weave-net 或者一些专用CNI插件如SR-IOV,DPDK等,可以调用在宿主机上的任意CNI插件. CNI-Genie可以在运行时选用在该特定节点上运行的任何现有CNI插件。 Smart CNI 根据用户关注的性能指标自动选择CNI,例如占用率,子网数量,延迟,带宽这些“KPI” 去选择CNI 网络隔离 为租户提供专用的“物理”网络 在共享的“物理”网络上为不同租户隔离的“逻辑

    1.7K21发布于 2019-09-12
  • 来自专栏shysh95

    Kubernetes CNI网络插件

    什么是CNI网桥? Kubernetes通过一个CNI接口,维护了单独的网桥代替docker0,该网桥就是CNI网桥,默认是cni0。 CNI网络插件的思想是? 在Kubernetes中,有一个步骤是安装kubenetes-cni包,目的是在宿主机上安装CNI插件所需的基础可执行文件,安装完成后可以在/opt/cni/bin目录下看到,如下图: CNI可执行文件的分类 CNI插件的安装 Flannel的CNI插件默认已经在/opt/cni/bin中,所以无需单独安装,但是如果是其他的网络项目,则需要把其对应的CNI插件可执行文件放在/opt/cni/bi目录下。 CNI插件的工作原理 CNI插件在被调用时会接收由dockershim设置的一组CNI环境变量,其中有一个环境变量参数叫做CNI_COMMAND,取值有ADD和DEL两种。 ADD和DEL就是CNI插件唯一要实现的两个方法,ADD的含义是把容器添加到CNI网络中,DEL则是把容器从CNI网络中移除。

    92720编辑于 2023-08-23
  • 来自专栏sealyun

    彻底理解kubernetes CNI

    CNI接口很简单,特别一些新手一定有克服恐惧心里,和我一探究竟,本文结合原理与实践,认真读下来一定会对原理理解非常透彻。 | 环境介绍 我们安装kubernetes时先不安装CNI. 创建CNI配置文件 $ mkdir -p /etc/cni/net.d $ cat >/etc/cni/net.d/10-mynet.conf <<EOF { "cniVersion": "0.2.0 让cni去配置 . (echo $1 | tr '[:lower:]' '[:upper:]') export PATH=$CNI_PATH:$PATH # 这个指定CNI bin文件的路径 export CNI_CONTAINERID # 这里把CNI的配置文件通过标准输入也传给CNI命令行工具 if [ $?

    2K20发布于 2019-08-05
  • 来自专栏正则

    k8s cni

    背景 提到k8s网络就不得不提 CNI(容器网络接口),本文主要是说下CNI是什么,以及在哪里被调用,不对CNI插件的具体实现做分析。 cni官方定义 CNI CNI 是一个标准和约定,只要实现CNI标准的网络解决方案都可以被k8s使用。 之前CNI的调用代码在dockershim也说明一个定位,就是CNI不是K8s kubelet的一部分,CNI是给容器定的规范, 所以官方也说CRI自己管理CNI 综上得出,CRI基于CNI管理K8s 在 /etc/cni/net.d/目录下的配置文件定义 CNI会加载/etc/cni/net.d/目录下的配置文件定义,来决定使用哪几个插件。 综上,CNI是给CRI实现的,kubelet 不涉及CNI实现,kubelet请求CRI创建容器时,CRI会负责通过CNI配置网络。

    78931编辑于 2022-03-17
  • 来自专栏jeremy的技术点滴

    完善cni的ipam方案

    集中式的ip分配方案比较多,官方本身就是dhcp的cni插件,另外也可以找一个集中存储(如consul, etcd),基于这个做集中式的cni插件。 参考上述思路,我快速完成了此cni插件的开发,源代码地址为cni-ipam-etcd。这里对etcd的读写代码参考这里。 这个cni插件使用也比较简单,可配合常用的underlay网络cni插件使用,如下: { "name": "mymacvlan", "type": "macvlan", "master": "enp5s0f0 /net.d/ volumeMounts: - name: host-cni-cfg mountPath: /etc/cni/net.d : /opt/cni/bin 假设提前将名为macvlan、ipam-etcd的cni插件二进制文件放入了k8s-network:v1.0.0 这个docker镜像中。

    4.3K30发布于 2019-07-24
  • 来自专栏有点技术

    istio-cni详解

    Istio CNI插件取代了istio-init容器提供的功能。 iptables策略 install-cni install-cni程序会根据获取配置通过模板对原始cni配置文件进行修改,配置模板存储在istio-cni-config configmap中,渲染后添加的配置如下 •拷贝所需要的相关二进制命令,包含istio-cni/istio-cni-repair/istio-iptables三个命令•创建所需要的kubeconfig,默认为/etc/cni/net.d/ZZZ-istio-cni-kubeconfig •生成cniconfig,即添加了一个kubernetes cni plugin,•永久等待 istio-cni 当kubelet调用cni时会执行上述插件, 通过cni传过来的参数获取相关配置,如果pod 该程序相当于一个故障处理程序,主要解决以下两个问题 •如果应用程序容器在istio-cni安装完成之前启动,则Kubelet不了解Istio CNI插件。

    1.4K20发布于 2020-09-04
  • 来自专栏后端云

    intel userspace cni 适配 Kubevirt

    虽然KubeVirt还没官方支持DPDK,但intel userspace cni已经为KubeVirt做了一些适配。 &server emptyDir ovs&qemu privilege vhost user client&server kubevirt 使用DPDK需要用到intel的网络插件userspace cni For-vhost-user-client-ports-Open-vSwitch-acts-as-the-client-and-QEMU-the-server 本篇是关于intel userspace cni

    46340编辑于 2022-11-25
  • 来自专栏k-cloud-labs

    Kubelet与CNI交互源码

    haoqingchuan/p/8668746.html,有修改 代码版本1.12.4 整体介绍 kubelet通过调用 grpc 接口调用实现了 CRI 的 dockershim 完成 rpc 通信,CNI server 中调用的 kubelet -> CRI shim -> container runtime -> container POD 创建过程中从 kubelet 到 docker server 到 cni 的 UML 结构如下 CNI 插件初始化 kubelet 在初始化的时候如果使用containerRuntime为Docker,则会起动dockershim rpc server 1 2 3 config 文件,并以此 config 文件查找到对应的 CNI bin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 执行 CNI binary,并将 CNI config 文件内容作为 stdin ,将podName, podNamespace, podSandboxID 等以 env 的形式传递给 CNI binary

    71720编辑于 2023-03-06
  • 来自专栏云原生知识宇宙

    Istio 学习笔记:Istio CNI 插件

    提出类似 k8s CNI 的插件扩展机制,而是 k8s CNI 的一个具体实现 k8s CNI 插件是一条链,在创建和销毁pod的时候会调用链上所有插件来安装和卸载容器的网络,istio CNI Plugin proxy 进程 当然也就要求集群启用 CNI,kubelet 启动参数: --network-plugin=cni (该参数只有两个可选项:kubenet, cni) 实现方式 运行一个名为 istio-cni-node 工作流程 复制 Istio CNI 插件二进制程序到CNI的bin目录(即kubelet启动参数--cni-bin-dir指定的路径,默认是/opt/cni/bin) 使用istio-cni-node /serviceaccount) 生成CNI插件的配置并将其插入CNI配置插件链末尾(CNI的配置文件路径是kubelet启动参数--cni-conf-dir所指定的目录,默认是/etc/cni/net.d ) watch CNI 配置(cni-conf-dir),如果检测到被修改就重新改回来 watch istio-cni-node 自身的配置(configmap),检测到有修改就重新执行CNI配置生成与下发流程

    2.4K61发布于 2019-04-07
  • 来自专栏后端云

    intel userspace cni 源码分析

    基于 截至2022.06.27 最新的 intel userspace cni 源码 KubeVirt + DPDK,涉及到一个intel的网络插件intel userspace cni,在搞KubeVirt + DPDK前先梳理下intel userspace cni的源码。 # intel userspace cni 大致目录结构,暂时不涉及vpp,忽略vpp的代码├── cniovs │ ├── cniovs.go - ovs网络插件 │ ├── localdb.go /pkg/skel" "github.com/intel/userspace-cni-network-plugin/pkg/annotations" "github.com/intel/userspace-cni-network-plugin 和del add主要有5步: 通过cni命令的args获取网络namespace get host和pod的共享目录 增加host相关的网络资源 通过cni命令的args获取ip信息,通过reset参数传递给

    71210编辑于 2022-11-25
  • 来自专栏乔边故事

    kubernetes的CNI是什么?

    在Kubernetes中,并不是用docker0来作为网桥,而是通过一个CNI接口来替代docker0,它在宿主机上的默认名字叫cni0。 注意:CNI网桥只负责Kubernetes创建的Pod,如果你单独用docker run启动一个容器,其网桥依然是docker0。 配置Infra容器的Network Namespace密切相关; CNI的设计思想即为:Kubernetes在启动Infra容器之后,就可以直接调用CNI网络插件,为这个Infra容器的Network CNI中有两个重要的概念: 容器(Container):是拥有独立Linux网络命名空间的环境,例如使用Docker或rkt创建的容器。 CNI Plugin负责为容器配置网络资源,IPAM Plugin负责对容器的IP地址进行分配和管理。IPAM Plugin作为CNI Plugin的一部分,与CNI Plugin一起工作。

    2.5K21发布于 2020-03-23
  • 来自专栏有文化的技术人

    CNI之Flannel网络原理

    简介 flannel是 coreos 开源的 Kubernetes CNI 实现。它使用 etcd 或者 Kubernetes API 存储整个集群的网络配置。 cni0:是一个linux bridge,用于连接同一个宿主机上的pod。 vethf12090da@if3:容器内eth0网卡的对端设备,从名字上看,在容器内eth0网卡的编号应为3。

    71150编辑于 2023-08-19
  • 来自专栏云计算与大数据

    cni | pod ip 地址分配过程

    CNI 插件是遵循 CNI 规范的可执行文件,我们将在下面的帖子中讨论一些插件。 CNI 配置文件的位置是可配置的,默认值为 /etc/cni/net.d/<config-file>。CNI 插件需要由群集管理员在每个节点上提供。 CNI 插件的位置也是可配置的,默认值为 /opt/cni/bin。 install-cni 容器在每个节点上创建 CNI 配置文件 - /etc/cni/net.d/10-flannel.conflist。 网络提供程序 CNI 插件调用其他基本 CNI 插件来配置网络。CNI 插件之间的交互如下所述。

    2.6K21编辑于 2022-04-18
  • 来自专栏LinkinStar's Blog

    K8S之CNI

    今天我们就通过这些问题来看看 k8s 的 CNI 的设计。CNI 到底究竟是个什么东西,到底是不是和你想的一样那么困难。 实现必须满足这样的网络模型才可以,那么 CNI 究竟要做啥呢? CNI 在模型中所处的位置,那么它究竟是什么呢? 网络里;DEL 操作的含义则是:把容器从 CNI 网络里移除掉。 而对于网桥类型的 CNI 插件来说,这两个操作意味着把容器以 Veth Pair 的方式“插”到 CNI 网桥上,或者从网桥上“拔”掉。

    1.5K22编辑于 2022-09-01
领券