我用 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呢?这是在哪里配置的?