Выбор контейнерного рантайма
Содержание
Overview
Container Runtime — это ключевой компонент Kubernetes, отвечающий за управление жизненным циклом образов и контейнеров.
При создании кластеров через платформу вы можете выбрать в качестве компонента рантайма либо Containerd, либо Docker.
Примечание: Kubernetes версии 1.24 и выше официально больше не поддерживает Docker runtime. Официально рекомендуемый рантайм — Containerd. Если вам всё же необходимо использовать Docker runtime, сначала нужно включить cri-docker в feature gate, после чего при создании кластера можно будет выбрать Docker в качестве компонента рантайма. Подробнее о работе с feature gates смотрите в разделе Feature Gate Configuration.
Быстрый гид по выбору
Отличия между Docker и Containerd
Общие команды
Отличия в цепочке вызовов
-
Docker в качестве контейнерного рантайма Kubernetes имеет следующую цепочку вызовов:
kubelet > cri-dockerd > dockerd > containerd > runC
-
Containerd в качестве контейнерного рантайма Kubernetes имеет следующую цепочку вызовов:
kubelet > cri plugin (в процессе containerd) > containerd > runC
Итог: Несмотря на то, что dockerd добавляет такие возможности, как swarm cluster, docker build и Docker API, он может приводить к ошибкам и добавляет дополнительный уровень в цепочку вызовов. Containerd имеет более короткую цепочку вызовов, меньше компонентов, большую стабильность и меньше потребляет ресурсов узла.