← Все статьи

kubeadm: kubelet-check connection refused на localhost:10248 — решение

Автор: Юрий Нефёдов, системный инженер · 29.07.2021 · обновлено 24.10.2026

При установке кластера командой kubeadm init процесс останавливается с ошибкой:

[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused

Это значит, что служба kubelet не запустилась. Встречал на CentOS 8 с Docker.

Причины

Точную причину покажет журнал kubelet: journalctl -u kubelet -n 50.

Решение

Сбросить неудачную установку, переключить Docker на драйвер systemd, отключить swap и запустить kubelet:

kubeadm reset -f

cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

systemctl daemon-reload
systemctl restart docker
swapoff -a
systemctl start kubelet

После этого повторите kubeadm init. swapoff -a действует до перезагрузки: чтобы swap не включился снова, закомментируйте строку swap в /etc/fstab.

Начиная с Kubernetes 1.24 Docker как среда запуска напрямую не поддерживается, обычно используют containerd. Там то же самое делается параметром SystemdCgroup = true в /etc/containerd/config.toml.

Нужна помощь с настройкой?

Если задача сложнее, чем в статье, напишите мне. Первая консультация бесплатная.