CNI Plugins 调研
CNI Plugins 调研1. 通用 CNI 插件
主要基于 containernetworking/plugins: Some reference and example networking plugins, maintained by the CNI team. (github.com) ,CNI
由CNI 官方社区维护的 CNI plugins 主要分为三类:
Main: interface-creating: 主进程 CNI ,直接与 Linux 交流,创建接口、网络空间、对象等
IPAM: IP address allocation: 地址管理插件,主要负责 IP 地址管理和分配
Meta: other plugins: 其他的功能插件
Main: interface-creating 主进程 CNIbridge 创建虚拟网桥,并把本机(host)和容器(更准确说是network namespace)添加到其中
macvlan 创建一个新的 MAC 地址,将相关容器的所有流量都转发到该地址
ipvlan 类似于 macvlan创建虚拟局域网连接, ...
CNI 与 Pod 容器网络—— Linux 网络
CNI 与 Pod 容器网络—— Linux 网络
Pod 容器在 kubernetes 网络中是怎样获取他的地址的呢?
如何保障 Pod IP 在整个集群当中的唯一性?
容器流量如何在所给的IP之间相互转发?
从 namespace 开始namespace 技术是 Linux 内核提供的一项非常重要的功能,也是容器虚拟化的基础技术,通过构建系统资源的边界,形成一个相对封闭的资源区域,也就是大家认识的容器。Linux 提供的 namespace 包括以下几个方面:
12345678910Linux provides the following namespaces:Namespace Constant IsolatesCgroup CLONE_NEWCGROUP Cgroup root directoryIPC CLONE_NEWIPC System V IPC, POSIX message queuesNetwork CLONE_NEWNET Network devices, stacks, po ...
创建简单的CNI插件
使用 Golang 实现一个简易的 CNI对于 CNI 的功能实现将按照循序渐进的方式来进行实现目标
依据 config 文件创建 bridge 对象并分配 ns 对应的 ip 地址
提供容器网络通信服务
实验的代码和脚本可以在 IdeaMeshDyx/knetwork 中找到
设计简易的 CNI 工作逻辑由于 cni 提供的服务集中于节点的 L2/L3 层通信,所以基础的 cni 大致功能就是通过读取 config 文件配置在本地 Linux 环境当中给容器分配地址并通过 bridge 等设备建立通信能力。
依据上一篇博客所学习到的 cni 规范,我们可以将 cni 的基础工作逻辑梳理如下:
kubelet 先创建 pause 容器创建对应的网络命名空间;
cri 或者是 cni 主程序根据配置调用具体的 CNI 插件,可以配置成 CNI 插件链来进行链式调用;
当 CNI 插件被调用时,通过传入配置以及命令行参数来获得网络命名空间、容器的网络设备等必要信息,然后执行 ADD 、 DELETE 或者其他操作;
CNI 插件给 pause 容器配置正确的网 ...
Kubernetes 容器网络 — CNI
CNI 概述什么是 CNI
CNI的全称是 Container Network Interface,它为容器提供了一种基于插件结构的标准化网络解决方案。以往,容器的网络层是和具体的底层网络环境高度相关的,不同的网络服务提供商有不同的实现。CNI从网络服务里抽象出了一套标准接口,从而屏蔽了上层网络和底层网络提供商的网络实现之间的差异。并且,通过插件结构,它让容器在网络层的具体实现变得可插拔了,所以非常灵活。
首先 CNI 是一套标准接口,它隶属于CNCF(Cloud Native Computing Foundation),依照这个标准所实现的为 CNI Plugins, 他们彼此独立,也可以组合起来一起使用,由一组用于配置 Linux 容器的网络接口的规范和库组成,同时还包含了一些插件,CNI 仅关心容器创建时的网络分配,和当容器被删除时释放网络资源。
其次 依据 CNI 的规范,CNI 具有以下几点特征:
CNI 需提供网络管理员定义网络配置的文件格式
CNI 需提供 Container Runtime(CRI) 调用功能的协议/API。
当 CNI 被 CRI 调用时 ...
AI-Overview
机器学习与大模型大语言模型是机器学习技术中自然语言处理(NLP)领域的一个实际应用,通过具备大规模参数的深度学习模型,对自然语言进行建模和生成,具备理解和生成自然语言文本的能力。其中这些大语言模型会使用不同的神经网络架构,如循环神经网络(RNN)、长短期记忆网络(LSTM)、门控循环单元(GRU)以及变换器(Transformer)等;他们可以看做是一个加工的盒子,通过输入大量的数据输出一个多参数集合的函数处理集合,这个集合就是大模型,它能够完成语言建模、文本分类、文本生成、机器翻译等工作,具体方式是给这个模型输入新的数据,通过这些多参数集合的函数处理后输出新的数据,然后将这些数据重新编码回自然语言。事实上,除了大语言模型,其他生成式的图片模型、视频模型等工作流程也类似。^1 ^2
简单来说,机器学习是训练一段软件(称为模型model,实际就是一个具备大量参数的函数处理集合)以做出数据识别或从数据生成内容的过程。本质上来说,模型是自机器学习系统通过各类方式抽象出来的数学关系
这样的方式是通过数学公式和方法去不断抽象数据及变化的特征,同时把这些特征转化为参数固定下来,比如模型需要关心一句 ...
Docker 环境下配置 Hexo 博客
Hexo Blog
记录博客搭建管理的技术栈和流程
博客的技术方案选择: [Hexo+github.io][https://hexo.io/zh-cn/]
博客模板选择: [Butterfly][https://butterfly.js.org/]
博客文件管理模式:
使用 docker环境管理:[独立使用 docker 编译环境][https://github.com/IdeaMeshDyx/dev-enviroment/tree/main/hexo]
首先是选择一个合适的博客管理技术栈,实际上借用已有的博客平台比如[掘金][https://juejin.cn/],[开源中国][https://www.oschina.net/],[CSDN][https://www.csdn.net/] 等可以节省自己部署成本,但是这些平台太过于复杂且页面风格等方面难以符合自己的需求,最重要的是太过于复杂和笨重。
使用静态博客需要花费更多的精力,但是也可以更贴近开发方式,也可以作为部分技术点的试验方式,故选用这个需要折腾的方式。目前最为著名的两个技术栈是:
Jekyll:42.6k Git ...