Я установил 2 среды k8s с помощью minikube. Один с флагом --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, а все контейнеры являются дочерними элементами container-shim-runc-v2, чей PID равен 1. ?!?! Почему containerd
не ребенок dockerd
? Где это настраивается?