Error cri container runtime is not running
В этом сообщении в блоге рассматривается проблема и исправление, с которыми столкнулись очень немногие из нас при выполнении команды инициализации kubeadm. Мы часто видим, что kubeadm init получает: Error cri container runtime is not running.
Полная ошибка может выглядеть так, как показано ниже, иногда с предупреждением.
$ kubeadm init
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
error execution phase preflight: [preflight]
Some fatal errors occurred: [ERROR CRI]: container runtime is not running Status from runtime service failed” err=”rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService”
Это распространенная проблема при запуске команды инициализации kubeadm, когда используется CRI Containerd . В большинстве случаев проблема связана с файлом config.tomal.
Исправьте ошибку
Чтобы исправить ошибку, вы можете удалить файл config.tomal и перезапустить контейнер, затем попробуйте выполнить команду init, как показано ниже:
$ rm /etc/containerd/config.toml
$ systemctl перезапустить контейнер
инициализация $ kubeadm
Для [ПРЕДУПРЕЖДЕНИЕ Firewalld]: firewalld активен, пожалуйста, убедитесь, что порты [6443 10250] открыты, иначе ваш кластер может работать некорректно, вы должны настроить брандмауэр на главном и рабочих.
Для выполнения своих задач узлы, контейнеры и модули должны иметь возможность обмениваться данными по всему кластеру. Добавьте следующие порты, введя перечисленные команды.
Введите следующие команды на главном узле:
$ sudo firewall-cmd –permanent –add-port=6443/tcp
$ sudo firewall-cmd –permanent –add-port=2379-2380/tcp
$ sudo firewall-cmd –permanent –add-port= 10250 /tcp
$ sudo firewall-cmd –permanent –add-port=10251/tcp
$ sudo firewall-cmd –permanent –add-port=10252/tcp
$ sudo firewall-cmd –permanent –add-port=10255/tcp
брандмауэр $ sudo-cmd –перезагрузка
Каждый раз, когда добавляется порт, система подтверждает сообщение об успешном завершении.
Введите следующие команды на каждом рабочем узле:
$ sudo firewall-cmd –permanent –add-port=10251/tcp
$ sudo firewall-cmd –permanent –add-port=10255/tcp
$ firewall-cmd –перезагрузить
Вы также можете проверить тему обсуждения в форме GitHub
Что произошло?
[ERROR CRI]: container runtime is not running: output: E0731 22:55:10.706285 3979 remote_runtime.go:925] “Status from runtime service failed” err=”rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService”
Что вы ожидали, что произойдет?
Решение состоит в том, чтобы удалить файл конфигурации и перезапустить,
rm -rf /etc/containerd/config.toml
systemctl restart containerd
Причина, по-видимому, в том, что этот параметр файла конфигурации отключает CRI контейнера
disabled_plugins = [“cri”]
Однако, если я оставлю его пустым и перезапущу его, вышеуказанная ошибка все равно появится. Я хочу знать, почему возникает эта проблема.
Как мы можем воспроизвести это (как можно более минимально и точно)?
curl -o /etc/yum.repos.d/docker.repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install containerd.io
containerd config default | sudo tee /etc/containerd/config.toml
sed -i ‘s/systemd_cgroup = false/systemd_cgroup = true/g’ /etc/containerd/config.toml
systemctl restart containerd
config.txt