【发布时间】:2021-08-07 15:59:38
【问题描述】:
我用 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 中 shims 是 PID 1 的子代 而场景 2 shims 是 containerd 的子代?
编辑:只是想到了一个编辑。在 ubuntu 20 机器上,如果我安装 docker,dockerd 是一个独立进程,其父进程为 PID 1,containerd 是一个独立进程,其父进程为 PID 1,所有容器都是 PID 为 1 的 container-shim-runc-v2 的子进程?!?!为什么 containerd 不是 dockerd 的孩子?这是在哪里配置的?
【问题讨论】:
-
你好@HariSundararajan。您能告诉我们您使用的是哪个版本的 Minikube?
-
@WytrzymałyWiktor 最新消息。 v1.20.0
标签: minikube containerd runc docker-daemon