penglongli / blog

18 stars 1 forks source link

容器概念:OCI、CRI、CNI介绍 #126

Open penglongli opened 5 years ago

penglongli commented 5 years ago

在容器及 Kubernetes 相关的技术中,我们经常会听到几个名词,很容易弄混。如:OCI、CRI、CNI、CSI。下边简单介绍下他们的概念,以及它们之间的关系

名词解释

服务之间相互通信,走的是接口(协议、规范)。容器相关的一些开源软件(如:Kubernetes、Containerd、CRI-O、runc、Kata-Containers),大多是通过 protobuf 作为通信协议来开发的。大家通过约定的规范来定义接口,各自实现接口上下层,来完成具体功能的开发。

下边是一些概念的解释:

关系

Kubelet 通过轮询 kube-apiserver 来判定是否要在当前节点启动 Pod。

当需要创建 Pod 的时候,Kubelet 会通过调用 CNI 接口获取网络资源(如 IP 等),然后调用 CRI 接口去创建容器,并把网络资源设进容器中。

CRI服务(Containerd、CRI-O)会去调用 OCI 标准运行时(runc、Kata-Container)来创建容器。