Предупреждения в kubeadm после перехода с docker на containerd

Я запускаю кластер kubernetes, установленный с помощью kubeadm. Недавно я обновился с 1.19 до 1.20 и перевел контейнерную среду выполнения с docker на containerd, поскольку docker теперь устарел.

Я настроил containerd и kubelet на его использование и удалил docker со всех узлов. Все вроде бы работает нормально.

Сегодня я попытался обновиться с 1.20 до 1.21, но получил два предупреждения при выполнении kubeadm upgrade plan, которые заставили меня думать, что переход containerd не был завершен:

  • Он пытается использовать docker:

    cannot automatically set CgroupDriver when starting the Kubelet: cannot execute 'docker info -f {{.CgroupDriver}}': executable file not found in $PATH
    
    • Возможно, у меня проблема с конфигурацией, потому что kubeadm, похоже, не знает, что мы больше не используем docker, но я не нашел нужной опции в документации или локальном conf, кроме --cri-socket, который не работает с kubeadm upgrade.
    • Во-вторых, формулировка странная: "при запуске кубелета". Но мой кубелет запускается просто отлично, не жалуется на отсутствие docker или CgroupDriver.
  • Он не обнаруживает настройки драйвера cgroup:

    Значение 'cgroupDriver' в KubeletConfiguration пустое. Начиная с версии 1.22, 'kubeadm upgrade' будет по умолчанию устанавливать пустое значение для драйвера cgroup 'systemd'. Драйвер cgroup между средой выполнения контейнера и кубелетом должен совпадать!
    

    Это действительно удивительно, потому что у меня есть cgroupDriver: systemd в kubectl -n kube-system get cm kubelet-config-1.20 -o yaml, в /var/lib/kubelet/config. yaml, также флаг в /etc/default/kubelet и /var/lib/kubelet/kubeadm-flags.env, и он даже выводится kubeadm --v=10 !

Как я могу выяснить, есть ли проблема с конфигурацией, или я могу спокойно игнорировать эти предупреждения?

Я не уверен, какие файлы, configmap или журналы могут быть полезны, чтобы помочь мне решить это, но я с радостью предоставлю их, если потребуется.

1
задан 22 April 2021 в 15:46
1 ответ

Хотя это было проголосовано, в случае, если у кого-то возникнет такая же проблема и он будет чувствовать себя таким же потерянным, как и я, я надеюсь, что google приведет вас сюда: )

  • kubeadm пытался использовать docker на основе конфигурации узла, а не конфигурации кубелета, и я не изменил конфигурацию узлов при переходе на containerd (поскольку не знал, что она задана на этом уровне). Исправьте с помощью:

    kubectl annotate node $node --overwrite kubeadm.alpha.kubernetes.io/cri-socket=unix:///run/containerd/containerd.sock
    

    для каждого узла. Нашел это здесь

  • Предупреждение cgroupDriver - это ошибка в kubeadm, которая, вероятно, не будет исправлена, потому что вся проверка скоро закончится. Так что его можно игнорировать (если в конфиге вашего кубелета действительно задан cgrouDriver).

2
ответ дан 24 April 2021 в 00:39

Теги

Похожие вопросы