https://kruyt.org/migrate-docker-containerd-kubernetes/

Проверяем, что у нас всё хорошо с containerd. Смотрим его неймспейсы. Там должен быть неймспейс moby - неймспейс, в котором запускает контейнеры docker:

sudo ctr namespace list
sudo ctr --namespace moby container list

Если неймспейс и контейнеры видны - значит все хорошо. Кордоним и дрейним ноду:

kubectl cordon kub
kubectl drain kub --delete-emptydir-data --ignore-daemonsets

Останавливаем сервисы:

systemctl stop kubelet
systemctl stop docker

Удаляем докер:

sudo apt-get purge docker.io

Убеждаемся, что плагин cri не входит в список отключенных в конфиге containerd:

containerd config dump | grep disabled_plugins

А если он там есть, то включаем cri (удаляем его из списка отключенных). Для этого комментируем строку в файле /etc/containerd/config.toml:

#disabled_plugins = ["cri"]

Включаем containerd в конфиг kubelet. То есть добавляем параметры

--container-runtime=remote --container-runtimeendpoint=unix:///run/containerd/containerd.sock

к строке с параметрами запуска kubelet в файле /var/lib/kubelet/kubeadm-flags.env. В итоге содержимое файла в моем случае стало таким:

KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.2 --resolv-conf=/run/systemd/resolve/resolv.conf --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock"

Всё. теперь можно перезагрузить ноду.
После перезагрузки у меня kubelet не завелся с ошибкой:

Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag.
Flag --resolv-conf has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. 

В итоге:

  • В /var/lib/kubelet/kubeadm-flags.env осталось вот что:
    KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.2 --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock"

  • Параметры –resolv-conf и –cgroup-driver переехали в /var/lib/kubelet/config.yaml:

    resolvConf: /run/systemd/resolve/resolv.conf
    cgroupDriver: systemd

После удаления docker многие пакеты, в том числе и containerd, будут считаться ненужными и могут быть автоматически удалены! Поэтому - их нужно переустановить вручную:

apt-get install bridge-utils cgroupfs-mount containerd git patch pigz runc

Проблемы

После перехода на containerd перестал запускаться под ElasticSearch Operator for kubernetes - eck с такой ошибкой:

{"log.level":"error","@timestamp":"2021-06-01T20:31:34.184Z","log.logger":"manager","message":"Error setting GOMAXPROCS","service.version":"1.1.1-f13b6d26","service.type":"eck","ecs.version":"1.4.0","error":"invalid format for CGroupSubsys: \"12:freezer:/kubepods-burstable-podf1fe3a11_2795_4c46_8eb6_a1929f4a53b5.slice:cri-containerd:96c7b19a81ff398e19131d816fb6de264e53499e5ad9b5a563f879cf1b37390c\"","error.stack_trace":"github.com/go-logr/zapr.(*zapLogger).Error\n\t/go/pkg/mod/github.com/go-logr/zapr@v0.1.0/zapr.go:128\ngithub.com/elastic/cloud-on-k8s/cmd/manager.execute\n\t/go/src/github.com/elastic/cloud-on-k8s/cmd/manager/main.go:188\ngithub.com/elastic/cloud-on-k8s/cmd/manager.glob..func1\n\t/go/src/github.com/elastic/cloud-on-k8s/cmd/manager/main.go:74\ngithub.com/spf13/cobra.(*Command).execute\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.5/command.go:830\ngithub.com/spf13/cobra.(*Command).ExecuteC\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.5/command.go:914\ngithub.com/spf13/cobra.(*Command).Execute\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.5/command.go:864\nmain.main\n\t/go/src/github.com/elastic/cloud-on-k8s/cmd/main.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:203"}

Гугление вывело сюда: https://discuss.elastic.co/t/elastic-operator-0-crashloopbackoff/267736/3
Нужно подредактировать конфиг containerd. В файлике /etc/containerd/config.toml раздел

Enter your comment. Wiki syntax is allowed:
B H R᠎ K M
 
  • devops/kubernetes_docker_deprecating.txt
  • Last modified: 2021/06/02 08:47
  • by admin