在Kubernets的生态中,有很多方便扩展的接口,包括CRI、CSI、CNI等,将这些接口抽象出来是为了提供开放、扩展和规范等能力。
K8S CRI(Container Runtime Interface)是K8S定义的一组与容器进行时交互的接口,用于将K8S平台与特定的容器进行时实现解耦。K8S从1.5版本引入CRI接口规范,充当kubelet和容器运行时之间的桥梁。CRI包括Protocol Buffers、gRPC API、运行库支持及开发中的标准规范和工具
Docker的CRI实现在Kubernets 1.6中被更新为Beta版本,并在kubelet启动时默认启动。目前实现了CRI spec的Runtime由Docker Engine、Containerd、CRI-O、Mirantis Container Runtime(Docker 企业版)等。
Kubernets在2020年宣布将弃用dockershim,标志着容器运行时正式向CRI切换,一方面是为了将kubelet核心主干代码与Runtime相关代码解耦,便于更好维护;另一方面是为了便于生态圈按CRI spec实现自己的运行插件,提供个性化的运行时扩展能力和开放性,以满足对更多Runtime的支持。
图一 容器运行时调用层级
对于容器的调用层级,可以对照图二。kubelet是客户端,CRI代理(shim)是服务端。早期的Kubernets版本默认使用dockershim,而1.6版本之后默认支持CRI,如果不希望使用CRI,则可以设置--enable-cri=false来关闭这个功能。Kubernetes v1.24 版本中dockershim已被正式移除,CRI-dockerd正式登场。
OCI(Open Container Initiative,开放容器计划)定义了创建容器的格式和运行时的开源行业标准,包括镜像规范(Image Specification)和运行时规范(Runtime Specification)。
Docker Engine是用来运行和管理容器的核心软件。通常人们会简单地将其代指为Docker或Docker平台。
Docker Engine主要的组件构成:Docker客户端(Docker Client)、Docker守护进程(Docker daemon)、Docker APIs、containerd以及 runc,它们共同负责容器的创建和运行。
containerd是一个来自 Docker 的高级容器运行时,并实现了CRI 规范。它是从Docker项目中分离出来,之后containerd 被捐赠给云原生计算基金会(CNCF)为容器社区提供创建新容器解决方案的基础。
所以Docker自己在内部使用containerd,当你安装Docker时也会安装 containerd。
containerd通过其CRI插件实现了Kubernetes容器运行时接口(CRI),它可以管理容器的整个生命周期,包括从镜像的传输、存储到容器的执行、监控再到网络。
命令 | docker | ctl(containerd) | cricrl(k8s) |
---|---|---|---|
查看运行容器 | docker ps | ctl task ls/ctl container ls | crictl ps |
查看镜像 | docker images | ctl image ls | crictl images |
查看容器日志 | docker logs | 无 | crictl logs |
查看容器信息 | docker inspect | ctr container info | crictl inspect |
查看容器资源 | docker stats | 无 | crictl stats |
容器启动 | docker start | ctl task start | cticrl start |
容器停止 | docker stop | ctl task kill | cticrl stop |
运行容器 | docker run | ctr run | 无(最小单元Pod) |
镜像打标 | docker tag | ctr image tag | 无 |
创建新容器 | docker create | ctr container create | crictl create |
导入镜像 | docker load | ctr image import | 无 |
导出镜像 | docker save | ctr image export | 无 |
删除容器 | docker rm | ctr container rm | crictl rm |
删除镜像 | docker rmi | ctr image rm | crictl rmi |
拉取镜像 | docker pull | ctr image pull | crictl pull |
推送镜像 | docker push | ctr image push | 无 |
在容器内执行命令 | docker exec | 无 | crictl exec |
进入容器 | docker attach | 无 | crictl attach |
显示pod列表 | 无 | 无 | crictl pods |
查看pod详情 | 无 | 无 | crictl inspectp |
运行pod | 无 | 无 | crictl runp |
停止pod | 无 | 无 | crictl stopp |
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有