我用 minikube 设置了 2 个 k8s 环境。一个带--container-runtime=docker
国旗,一个带--container-runtime=containerd
国旗。这是我看到的差异。
当我设置container-runtime=docker
时,这些事情就会发生
- 有一个
dockerd
服务正在运行 - 该
dockerd
服务containerd
作为自己的孩子产生 - 有
/usr/bin/containerd-shim-runc-v2
运行实际容器的进程,每个进程的父进程都是containerd-shim-runc-v2
系统上的 PID 1。
当我设置container-runtime=containerd
时,这些事情就会发生
- 没有
dockerd
服务,没有歧义。 - 有一个
containerd
进程,它由 PID 1 拥有。同样,这并不奇怪。 - 有
containerd-shim
运行实际容器的进程,每个进程的父containerd-shim
进程是containerd
所以这是我的问题
containerd-shim
和 和有什么区别containerd-shim-runc-v2
?他们似乎大多采用相似的标志等。- 为什么在场景 1 中,垫片是 PID 1 的子代,而在场景 2 中,垫片是 containerd 的子代?
编辑:只是想到了一个编辑。在 ubuntu 20 机器上,如果我安装 docker,dockerd 是一个独立进程,其父进程为 PID 1,containerd 是一个独立进程,其父进程为 PID 1,所有容器都是 PID 为 1 的 container-shim-runc-v2 的子进程?!?!为什么containerd
不是孩子dockerd
呢?这是在哪里配置的?