Вы можете настроить containerd v2 как основной container runtime на уровне всего кластера или для отдельных групп узлов. Этот вариант позволяет использовать cgroups v2, обеспечивает лучшую безопасность и более гибкое управление ресурсами.
Требования
Миграция на containerd v2 возможна при выполнении следующих условий:
- Узлы соответствуют требованиям, описанным в общих параметрах кластера.
- Версия ядра Linux не входит в диапазоны 6.12.0–6.12.28 или 6.14.0–6.14.6 (эти версии подвержены уязвимости CVE-2025-37999 в EROFS).
- На сервере нет кастомных конфигураций в
/etc/containerd/conf.d(пример кастомной конфигурации).
При несоответствии одному из требований, описанных в общих параметрах кластера, Deckhouse Virtualization Platform добавляет на узел лейбл node.deckhouse.io/containerd-v2-unsupported. Если на узле есть кастомные конфигурации в /etc/containerd/conf.d, на него добавляется лейбл node.deckhouse.io/containerd-config=custom.
При наличии одного из этих лейблов смена параметра spec.cri.type для группы узлов будет недоступна. Узлы, которые не подходят под условия миграции можно посмотреть с помощью команд:
d8 k get node -l node.deckhouse.io/containerd-v2-unsupported
d8 k get node -l node.deckhouse.io/containerd-config=custom
Также администратор может проверить конкретный узел на соответствие требованиям с помощью команд:
uname -r | cut -d- -f1
stat -f -c %T /sys/fs/cgroup
systemctl --version | awk 'NR==1{print $2}'
modprobe -qn erofs && echo "TRUE" || echo "FALSE"
ls -l /etc/containerd/conf.d
Как включить containerd v2
В процессе миграции директория /var/lib/containerd будет очищена, что приведет к повторному скачиванию образов всех подов, и узел перезагрузится.
Также обратите внимание, что обновление узла приводит к прерыванию его работы (disruptive-обновлению). Если для группы узлов установлено значение spec.disruptions.approvalMode: Manual, запустите обновление вручную на соответствующих узлах с помощью аннотации: d8 k annotate node <NODE-NAME> update.node.deckhouse.io/disruption-approved=.
Включение containerd v2 возможно двумя способами:
-
Для всего кластера. Укажите значение
ContainerdV2в параметреdefaultCRIресурса ClusterConfiguration. Это значение будет применяться ко всем NodeGroup, в которых явно не указанspec.cri.type.Пример:
apiVersion: deckhouse.io/v1 kind: ClusterConfiguration ... defaultCRI: ContainerdV2 -
Для конкретной группы узлов. Укажите
ContainerdV2в параметреspec.cri.typeв объекте NodeGroup.Пример:
apiVersion: deckhouse.io/v1 kind: NodeGroup metadata: name: worker spec: cri: type: ContainerdV2При переходе на containerd v2 Deckhouse Kubernetes Platform начнет поочерёдное обновление узлов.