172 похожих чатов

Господа, а кто нибудь инитил кубадмом кластер без докера, сразу

с контейнерд? Что имею:
kubeadm, kubelet v 1.22.4
containerd 1.5.8

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
nodeRegistration:
criSocket: "/run/containerd/containerd.sock"
kubeletExtraArgs:
runtime-cgroups: /system.slice/containerd.service
container-runtime: remote
container-runtime-endpoint: unix:///run/containerd/containerd.sock
cgroup-driver: "systemd"
v: "4"

В процессе инита (kubeadm init --v=2 --config ./kconfig.yaml --node-name k8s-master1) кублет говорит Cannot connect to the Docker daemon at unix:///var/run/docker.sock
Так же в видно, что nodeConfig ContainerRuntime:docker
Пробовал в кублетовый юнит докидывать ключи через енв Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock" тож не помогло. Если запустить кублет руками с ключами - таких ошибок нет

14 ответов

29 просмотров

Я бы посмотрел какие конфиги рендерит кубспрей для контейерд и украл бы, а потом разбирался.

нет необходимости указывать containerd в nodeRegistration. kubeadm сам умеет обнаруживать что у вас containerd. повысьте verbose левел еще больше, до 5 или 7. Он вам подробней напишет почему он хочет докер сокет. Возможно это вообще варнинг в механизме обнаружения (типо пробую докер сокет - его нет, пробую containerd сокет - он есть). У меня тоже containerd. Конфиги для kubeadm выглядят как-то так: https://pastebin.com/X3nXuYzv, нигде containerd явно не указываю

Dmitry Sergeev 🇺🇦
нет необходимости указывать containerd в nodeRegis...

из доки: > By default, Kubernetes uses the Container Runtime Interface (CRI) to interface with your chosen container runtime. If you don't specify a runtime, kubeadm automatically tries to detect an installed container runtime by scanning through a list of well known Unix domain sockets. The following table lists container runtimes and their associated socket paths: Runtime Path to Unix domain socket Docker /var/run/dockershim.sock containerd /run/containerd/containerd.sock CRI-O /var/run/crio/crio.sock If both Docker and containerd are detected, Docker takes precedence. This is needed because Docker 18.09 ships with containerd and both are detectable even if you only installed Docker. If any other two or more runtimes are detected, kubeadm exits with an error. The kubelet integrates with Docker through the built-in dockershim CRI implementation. See container runtimes for more information.

Ну и для точного указания cri я бы реконмедовал использовать не kubeletExtraArgs в InitConfiguration , KubeletConfiguration https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/

Wilderone- Автор вопроса
Dmitry Sergeev 🇺🇦
из доки: > By default, Kubernetes uses the Contai...

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

Wilderone- Автор вопроса
Dmitry Sergeev 🇺🇦
Ну и для точного указания cri я бы реконмедовал ис...

а вот в кублетконфиге не нашел возможности указать кри

Wilderone
да, однако без указания он тоже пытался постучатьс...

ну это норма что он стучится же. Я полагаю в ситуации если у вас есть докер, но вы все равно указали containerd сокет явно. То результат будет непредсказуемый, поскольку докер и kubelet будут делить containerd между собой. Скорее всего именно поэтому при существовании сокета докера выбирается он и пофиг что вы указали containerd сокет явно

Wilderone- Автор вопроса
Dmitry Sergeev 🇺🇦
ну это норма что он стучится же. Я полагаю в ситуа...

но если докера нет, то кублет же и не должен выбирать докеровский сокет?

Wilderone
но если докера нет, то кублет же и не должен выбир...

он его и не выберает. То что он проверяет его существование же не значит что он его выбрал

Wilderone- Автор вопроса
Dmitry Sergeev 🇺🇦
он его и не выберает. То что он проверяет его суще...

но кублет валится с ошибкой "не могу подключиться к докер сокету"

Wilderone- Автор вопроса
Wilderone
именно что валится

тогда увеличивайте verbose и смотрите что там. Можно с чатом поделетися полным выводом, мб поможем

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

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта