k8s

contained和docker的对比

容器运行时(Container Runtime)是k8s最重要的组件之一,负责管理镜像和容器的生命周期。Kubelet 通过 Container Runtime Interface (CRI) 与容器运行时交互,以管理镜像和容器。
k8s从1.20版本之后不再使用docker作为其默认CRI,而是使用了containerd。下面是对containerd的一些介绍。

1.介绍

docker由docker-client,dockerd,containerd,docker-shim,runc组成。containerd是docker的基础组件之一。
这是containerd官网的图片。
file

2.对比

1.调用链

从图中可以看到k8s在使用docker和containerd作为CRI时的不同调用路径:
docker:
kubelet –> docker shim (在 kubelet 进程中) –> dockerd –> containerd
containerd:
kubelet –> cri plugin(在 containerd 进程中) –> containerd
containerd调用链更短,组件更少,更稳定,占用节点资源更少。
dockerd 虽增加了 swarm cluster、 docker build 、 docker API 等功能,但也会引入一些 bug,而与 containerd 相比,多了一层调用。

2.常用命令

containerd 不支持 docker API 和 docker CLI,但是可以通过 cri-tool 命令实现类似的功能。

镜像相关功能 docker contained
显示本地镜像列表 docker images crictl images
下载镜像 docker pull crictl pull
上传镜像 docker push
删除本地镜像 docker rmi crictl rmi
显示镜像详情 docker inspectc crictl inspecti

POD相关功能

POD相关功能 docker containerd
显示POD列表 crictl pods
查看POD详情 crictl inspectp
运行POD crictl runp
停止POD crictl stopp

容器日志位置和参数

对比项 docker containerd
存储路径 docker作为k8s容器运行时的情况下,容器日志的落盘由docker来完成, 保存在类似/var/lib/docker/containers/$CONTAINERID目录下。kubelet会在/var/log/pods和/var/log/containers下面建立软链接,指向/var/lib/docker/containers/$CONTAINERID目录下的容器日志文件 containerd作为k8s容器运行时的情况下, 容器日志的落盘由kubelet来完成,保存到/var/log/pods/$CONTAINER_NAME目录下,同时在/var/log/containers目录下创建软链接,指向日志文件
配置参数 在docker配置文件中指定: “log-driver”: “json-file”, “log-opts”: {“max-size”: “100m”,”max-file”: “5”} 方法一:在kubelet参数中指定: –container-log-max-files=5 –container-log-max-size=”100Mi” 方法二:在KubeletConfiguration中指定: “containerLogMaxSize”: “100Mi”, “containerLogMaxFiles”: 5,
把容器日志保存到数据盘 把数据盘挂载到”data-root”(缺省是/var/lib/docker)即可 创建一个软链接/var/log/pods指向数据盘挂载点下的某个目录

cni

对比项 docker containerd
谁负责调用CNI kubelet内部的docker-shim containerd内置的cri-plugin
如何配置CNI kubelet参数 –cni-bin-dir 和 –cni-conf-dir containerd配置文件(toml): plugins.cri.cni bin_dir = “/opt/cni/bin” conf_dir = “/etc/cni/net.d”

容器相关功能

容器相关功能 docker containerd
显示容器列表 docker ps crictl ps
创建容器 docker create crtctl create
启动容器 docker start crtctl start
停止容器 docker stop crictl stop
删除容器 docker rm crictl rm
查看容器详情 docker inspect crictl inspect
attach docker attach crictl attach
exec docker exec crictl exec
logs docker logs crictl logs
stats docker stats crictl stats

镜像相关功能

镜像相关功能 docker containerd
显示本地镜像列表 docker images crictl images
下载镜像 docker pull crictl pull
上传镜像 docke push
删除本地镜像 docker rmi crictl rmi
查看镜像详情 docker inspect crictl inspecti
分类: k8s
0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x