2023年11月29日发(作者:)
容器开放接⼝规范(CRIOCICNI)
CRI - Container Runtime Interface(容器运⾏时接⼝)
CRI中定义了容器和镜像的服务的接⼝,因为容器运⾏时与镜像的⽣命周期是彼此隔离的,因此需要定义两个服务,该接⼝使⽤Protocol
Buffer,基于gRPC。
Container Runtime实现了CRI gRPC Server,包括RuntimeService和ImageService。该gRPC Server需要监听本地的Unix socket,⽽
kubelet则作为gRPC Client运⾏
启⽤CRI
除⾮集成了rktnetes,否则CRI都是被默认启⽤了,kubernetes1.7版本开始旧的预集成的docker CRI已经被移除。
要想启⽤CRI只需要在kubelet的启动参数重传⼊此参数:远程运⾏时服务的端点。当前Linux上⽀持unix
--container-runtime-endpoint
socket,windows上⽀持tcp。例如:、 ,默认是,即默认
unix:///var/run/(socket)tcp://localhost:373(tcp)unix:///var/run/
使⽤本地的docker作为容器运⾏时.
配置实例:如使⽤cri-containerd作为CRI接⼝,使⽤kubeadm安装集群,改动配置如下:
// CreateContainer creates a new container in specified PodSandbox
rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse) {}
// StartContainer starts the container.
CNI - Container Network Interface(容器⽹络接⼝)
CNI(Container Network Interface) 是 google 和 CoreOS 主导制定的容器⽹络标准,它本⾝并不是实现或者代码,可以理解成⼀个协议。这
个标准是在 rkt ⽹络提议的基础上发展起来的,综合考虑了灵活性、扩展性、ip 分配、多⽹卡等因素.
这个协议连接了两个组件:容器管理系统和⽹络插件。它们之间通过 JSON 格式的⽂件进⾏通信,实现容器的⽹络功能。具体的事情都是插件来
实现的,包括:创建容器⽹络空间(network namespace)、把⽹络接⼝(interface)放到对应的⽹络空间、给⽹络接⼝分配 IP 等等
DEL(即插件DEL应该是幂等的)。
容器必须由ContainerID唯⼀标识。存储状态的插件应该使⽤(⽹络名称,容器ID)的主键来完成。
运⾏时不能调⽤同⼀个⽹络名称或容器ID执⾏两次ADD(没有相应的DEL)。换句话说,给定的容器ID必须只能添加到特定的⽹络⼀次。
CNI插件
CNI插件必须实现⼀个可执⾏⽂件,这个⽂件可以被容器管理系统(例如rkt或Kubernetes)调⽤。
这两个协议通过 OCI runtime filesytem bundle 的标准格式连接在⼀起,OCI 镜像可以通过⼯具转换成 bundle,然后 OCI 容器引擎能够识别
这个 bundle 来运⾏容器
设计考量
操作标准化:容器的标准化操作包括使⽤标准容器创建、启动、停⽌容器,使⽤标准⽂件系统⼯具复制和创建容器快照,使⽤标准化⽹络⼯具
进⾏下载和上传。
内容⽆关:内容⽆关指不管针对的具体容器内容是什么,容器标准操作执⾏后都能产⽣同样的效果。如容器可以⽤同样的⽅式上传、启动,不
管是PHP应⽤还是MySQL数据库服务。
基础设施⽆关:⽆论是个⼈的笔记本电脑还是AWS S3,亦或是OpenStack,或者其它基础设施,都应该对⽀持容器的各项操作。
为⾃动化量⾝定制:制定容器统⼀标准,是的操作内容⽆关化、平台⽆关化的根本⽬的之⼀,就是为了可以使容器操作全平台⾃动化。
容器ID:通常是⼀个哈希值,也可以是⼀个易读的字符串。在⽂件中加⼊容器ID是为了便于之前提到的运⾏时hooks只需载⼊
就- - 可以定位到容器,然后检测,发现⽂件不见了就认为容器关停,再执⾏相应预定义的脚本操作。
PID:容器中运⾏的⾸个进程在宿主机上的进程号。
容器⽂件⽬录:存放容器rootfs及相应配置的⽬录。外部程序只需读取就可以定位到宿主机上的容器⽂件⽬录。
后来,docker独⽴出来了containerd,kubernetes也顺应潮流,孵化了cri-containerd项⽬,⽤以将containerd接⼊到cri的标准中。
为了进⼀步与oci进⾏兼容,kubernetes还孵化了cri-o,成为了架设在cri和oci之间的⼀座桥梁。通过这种⽅式,可以⽅便更多符合oci标准的容


发布评论