目录
互动1:docker build构建的镜像和containerd镜像通用吗?
互动2:k8s1.24之前版本和1.24及1.24之后版本区别?
k8s 使用Docker和Containerd对比分析
如果你使用Docker作为K8S容器运行时的话,kubelet需要先要通过dockershim去调用Docker,再通过Docker去调用containerd。
如果你使用containerd作为K8S容器运行时的话, kubelet可以直接调用containerd。 使用containerd不仅性能提高了(调用链变短了),而且资源占用也会变小(Docker不是一个纯粹的容器运行时,具有大量其他功能)。
调用链如下:
Docker 作为 k8s 容器运行时,调用关系如下: kubelet --> docker shim (在 kubelet 进程中) --> dockerd --> containerd
Containerd 作为 k8s 容器运行时,调用关系如下: kubelet --> cri plugin(在 containerd 进程中) --> containerd
互动1:docker build构建的镜像和containerd镜像通用吗?
答:通用的,docker save -o 生成的镜像文件,可以基于ctr –n=k8s.io images import 导出来 [root@xianchaomaster1 ~]# docker save -o centos centos:latest
[root@xianchaomaster1 ~]# ctr -n=k8s.io images import centos
互动2:k8s1.24之前版本和1.24及1.24之后版本区别?
答:K8s1.24之前版本大多数在用docker作为容器,K8s1.24之后版本大多数在用containerd作为容器 如果k8s用docker做容器运行时,需要用docker pull 拉取镜像,如果k8s用containerd做容器运行时,需要用ctr –n=k8s.io images pull 拉取镜像