跳至内容

Debian使用Kubeadm部署Kubernetes失败:Connection Refused

Karson Zhong · Posted on 2023-10-27 · 28 Views

今天废话不多说直接解决一个阴间问题

问题

  1. 在部署kubernetes后(执行完kubeadm init后),执行任何kubectl命令,都会报以下错误:
The connection to the server xxx.xxx.xxx.xxx:6443 was refused - did you specify the right host or port?
  1. 此后执行kubectl get pods -A
    你会看到一些容器在无规律地被摧毁
  2. 在过一段时间后,Api-server直接开摆,你无法再连接上Kubernetes,直接Connection refused。

环境

如果你目前遇到类似问题,而且处于以下环境,那本文很可能可以帮你渡过难关:

  1. 你使用的是Debian系统(Debian12/11)
    • 我不确定其它系统会不会有相同错误,但不妨试试
  2. 你使用Kubeadm部署Kubernetes (目前的最新版,v1.28)
    • 我同样不确定其它的部署方式会不会有相同错误
  3. 你使用containerd作为container runtime
    • 如果你是通过Docker官方教程安装的Docker,那个教程会连带安装containerd
    • 所以如果你印象中没有专门安装过任何container runtime,那很可能就是containerd
  4. 你找过许多相同错误的解决方案,但最后都无法解决问题

原因

简单来说:containerdkubelet使用的cgourp driver版本对不上
Debian安装的conainerd的默认cgroup driver还是v1,但是kubelet使用的是v2

但说实话,详细的我也不太懂,也不太想去懂……
如果你对具体解释感兴趣,不妨查阅以下链接:

解决

但要解决这个问题还是比较简单,只要指定containerd使用cgroup driver v2就可以:

打开containerd配置文件:

vi /etc/containerd/config.toml

加入以下内容,并保存退出:

version = 2
[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
   [plugins."io.containerd.grpc.v1.cri".containerd]
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
          runtime_type = "io.containerd.runc.v2"
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            SystemdCgroup = true

重启containerd

systemctl restart containerd

重启kubelet

systemctl restart kubelet

结束了哥们,这就完事儿了。

真不敢相信被这个问题折磨了将近两天

程序员,热衷于游戏开发和软件制作。但也是一个杂食动物,喜欢探索各种赛博相关的奇技淫巧。

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

Nova - rebirth of a wonderful theme.

Theme Nova by KarsonJo

  • Serif
  • Sans Serif
切换主题 | SCHEME TOOL
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
0
希望看到您的想法,请您发表评论x
0
希望看到您的想法,请您发表评论x