Вы можете настроить containerd v2 как основной container runtime на уровне всего кластера или для отдельных групп узлов. Этот вариант позволяет использовать cgroups v2, обеспечивает лучшую безопасность и более гибкое управление ресурсами.
Требования
Миграция на containerd v2 возможна при выполнении следующих условий:
- Узлы соответствуют требованиям, описанным в общих параметрах кластера.
- На сервере нет кастомных конфигураций в
/etc/containerd/conf.d(пример кастомной конфигурации).
При несоответствии одному из требований, описанных в общих параметрах кластера, Deckhouse Kubernetes Platform добавляет на узел лейбл node.deckhouse.io/containerd-v2-unsupported. Если на узле есть кастомные конфигурации в /etc/containerd/conf.d, на него добавляется лейбл node.deckhouse.io/containerd-config=custom.
При наличии одного из этих лейблов cмена параметра 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
Включение 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 начнет поочерёдное обновление узлов. Обновление узла приводит к прерыванию работы размещенной на нем нагрузки (disruptive-обновление). На процесс обновления узла влияют параметры применения disruptive-обновлений группы узлов (spec.disruptions.approvalMode).
В процессе миграции директория /var/lib/containerd будет очищена, что приведет к повторному скачиванию образов всех подов, и узел перезагрузится.