《CNI specification》翻译

Overview

本文提出了一个通用的基于插件的Linux容器网络解决方案,容器网络接口,CNI。它脱胎于旨在满足大多数rtk网络设计的rtk Networking Proposal。

首先,我们对如下两个名词进行具体的定义:

  • container可以认为是与Linux network namespace是同义的。而一个network namespace具体对应什么,则与具体的容器运行时有关:例如,在rtk中,每个pod运行在一个单独的network namespace中。但是在docker中,network namespace存在于每个独立的Docker容器中
  • network代表了一组可以独立寻址并且可以互相交互的实体。这些实体既可以是一个单独的容器(如上所述),一台机器,或者其他什么网络设备(例如,一台路由器)。container可以加入一个或多个network,也可以从一个或多个network中移除。

本文旨在说明容器运行时和插件之间的接口。同时,可能还有些众所周知的字段,runtime也想传递给底层的插件,不过这些内容并不在本文中进行描述。

General consideration

首先容器运行时需要为container新建一个network namespace。之后,它需要决定该container属于哪些network,对于每个network还需要确定对应执行哪些插件。network configuration是以JSON格式存在的,很容易被存储在文件中。配置中需要包含一些必须的字段,例如,"name",“type”以及相应的插件必须的字段。同时,network configuration允许其中的字段在不同的调用间发生改变。因此,存在一个可选的"args"字段用于存放异变的信息。最后,容器运行时通过顺序地调用相应的插件来创建相应的network。当container的生命周期结束时,运行时再以相反的顺序调用插件,将它们从networks中移除。

CNI Plugin

Overview

每个CNI插件都是以一个能被容器管理系统(比如,rkt或者Docker)调用的可执行文件的形式存在的。

CNI插件负责将一个network interface插入container network namespace(比如,veth pair的其中一端)并且在宿主机中做一些必要的配置(例如将veth的另一端加入bridge中)。接着通过调用适当的IPAM插件,将IP赋给interface并且设置路由。

Parameters

CNI插件支持如下三种操作:

  • 将container加入network(Add):

    • Parameters:

      • Version. 调用者使用的CNI 配置的版本信息
      • Container ID. 这个字段是可选的,但是建议使用,在容器活着的时候要求该字段全局唯一的。比如,存在IPAM的环境可能会要求每个container都分配一个独立的ID,这样每一个IP的分配都能和一个特定的容器相关联。例如,在appc implementations中,container ID其实就是pod ID
      • Network namespace path. 这个字段表示要加入的network namespace的路径。例如,/proc/[pid]/ns/net或者对于该目录的bind-mount/link。
      • Network configuration. 这是一个JSON文件用于描述container可以加入的network,具体内容在下文中描述
      • Extra arguments. 该字段提供了可选的机制,从而允许基于每个容器进行CNI插件的简单配置
      • Name of the interface inside the container. 该字段提供了在container (network namespace)中的interface的名字;因此,它也必须符合Linux对于网络命名的限制
    • Result:
      • Interface list. 根据插件的不同,这个字段可以包括sandbox (container or hypervisor) interface的name,以及host interface的name,每个interface的hardware address,以及interface所在的sandbox(如果存在的话)的信息。
      • IP configuration assigned to each interface. IPv4和/或者IPv6地址,gateways以及为sandbox或host interfaces中添加的路由
      • DNS inormation. 包含nameservers,domains,search domains和options的DNS information的字典
时间: 2024-11-10 09:30:56

《CNI specification》翻译的相关文章

《Remus: High Availability via Asychronous Virtual Machine Replication》翻译

Abstract 想要让应用能够躲过硬件故障是一项非常昂贵的任务,因为这通常意味着对软件进行重构,使它包含复杂的恢复逻辑的同时需要部署专用的硬件,而这些对于提升大型的或者遗留的应用的可靠性是巨大的障碍.我们接下来将描述一个通用的高可用服务,它能够为那些已经存在并且未经修改的软件,在其运行的物理机故障的时候,提供保护.Remus提供了非常强的容错能力,它可以在发生故障的时候,让一个正在运行的系统无缝迁移到另一台物理机上,只需要短暂的停机时间,并且完全保留所有的主机状态,例如网络连接等等.我们采用的

Eclipse failed to create the Java Virtual Machine问题解决

1.问题描述 如标题所示,在开启Eclipse的时候,出现这个问题,以前是不曾出现过的问题,很奇怪: 2.问题解析 Failed to create the Java Virtual Machine,翻译过来的意思是,无法创建java虚拟机. 看到这样的问题,首先想到的是两个问题,第一,是否有文件缺失,导致虚拟机无法启动.想想不是太可能,文件缺失的话,应该之前就无法启动:再考虑是否有文件被安全软件回收了(360老干这种事情),打开360似乎也没有发现这种问题. 那么第二种情况,可能是内存不足,导

Windows Azure Virtual Machine (1) 相关技术

<Windows Azure Platform 系列文章目录> 1.Microsoft Azure是否由System Center和Hyper-V构成? Microsoft Azure虽然支持Hyper-V的VHD直接上传至Azure云端进行管理,但是Azure底层技术是微软自己研发的.独有的技术,且不对外提供.如果客户想构建属于自己的私有云平台,可以使用Azure Pack,采用微软的System Center + Windows Server产品,构建自己的私有云平台. 2.我是否可以在M

PatentTips - System and method to deprivilege components of a virtual machine monitor

BACKGROUND INFORMATION An embodiment of the present invention relates generally to virtualization platforms and, more specifically, to a system and method to run components of a virtual machine monitor at a reduced privilege level. Various mechanisms

[SQL in Azure] Provisioning a SQL Server Virtual Machine on Azure

http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-provision-sql-server/ Provisioning a SQL Server Virtual Machine on Azure The Azure virtual machine gallery includes several images that contain Microsoft SQL Server. You can sel

How to Downgrade VMware ESXi 5.5 Virtual Machine Hardware Version to 9 from 10

Shut down the virtual machine in the vSphere client. Remove your virtual machine from the ESXi inventory. Browse your Datastore and find the virtual machine's .vmx file.   Download it to your desktop. Open the .vmx file in Notepad or your favorite te

【cl】解决Fail to create the java Virtual Machine

eclipse打开,提示Fail to create the java Virtual Machine 解决方法: 1.到eclipse安装目录下,找到eclipse.ini 2.按键盘ctrl+F,复制以下字符“launcher.XXMaxPermSize”,去掉引号,查找 3.将随后出现的两个216m改成128m

虚拟机打不开错误:VMware Workstation cannot connect to the virtual machine.

错误提示: VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary files. The VMware Authorization Service is not running. 解决

用Virtual Machine Manager做虚拟机储存迁移

用Virtual Machine Manager做虚拟机储存迁移 下面是迁移虚拟机存储的例子 1.选中所要项迁移的虚拟机的存储---点击迁移存储 2.该路径 3.选择一个你事先弄好的共享文件夹---确定 4.下一步 5.移动 6.返回查看迁移情况 7.迁移完成 8.查看属性 9.查看存储位置

启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法

我安装的是Myeclipse 10.7.1.装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine. 检查Myeclipse安装好使用时好的啊,近期也没用,可能是近期升级了本地单独安装的jre版本导致的吧(Myeclipse使用自己的jre的). 整理了如下2个解决办法,可以选择一个使用,我选择的是第2个.经测试都ok. 方法一: 找到Myeclpise路径下的myeclipse.ini文件: 编辑将Xmx(JVM Heap最大允许的尺