Kubernetes容器运行时经历了从复杂到简洁的演变过程:
Docker时代(早期):
Kubelet → dockershim → Docker Daemon → Containerd → Containerd-shim → Runc
链路很长,Docker Daemon是多余的中间层。Kubernetes需要维护dockershim这个适配垫片。
Containerd v1.0时代:
Kubelet → CRI-containerd(独立进程) → Containerd → Containerd-shim → Runc
去掉了Docker Daemon,但仍需要独立的CRI-containerd进程做适配。
Containerd v1.1时代(当前主流):
Kubelet → Containerd(内置CRI插件) → Containerd-shim → Runc
将CRI适配逻辑作为插件直接嵌入Containerd主进程,链路最简洁。
CRI-O(替代方案):
Kubelet → CRI-O → Runc
专为Kubernetes设计的轻量级运行时,只做Kubernetes需要的事,去掉了所有不必要的功能。
Kubernetes 1.24版本正式移除了dockershim,标志着Docker作为K8s运行时的退场。




