当前位置: 首页 > news >正文

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

这篇文章也可以在我的博客中查看

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

问题

  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

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

  • Why does etcd fail with Debian/bullseye kernel?
  • cgroups-k8s

解决

但要解决这个问题还是比较简单,只要指定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

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

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

相关文章:

  • 【Linux】权限
  • 京东平台数据分析:2023年9月京东扫地机器人行业品牌销售排行榜
  • 039-第三代软件开发-PDF阅读器
  • 21.12 Python 实现网站服务器
  • Kali安装docker
  • ES6中的class类
  • k8s replicaSet,deployment 学习笔记
  • Prometheus接入AlterManager配置钉钉告警(基于K8S环境部署)
  • Vue Router:让你的应用路由起来!
  • 磁盘调度算法之先来先服务(FCFS),最短寻找时间优先(SSTF),扫描算法(SCAN,电梯算法),LOOK调度算法
  • 前端页面如何自适应--4种方法
  • Python类的常用特殊方法
  • DoLa:对比层解码提高大型语言模型的事实性
  • toluaframework中C#怎么调用Lua的方法以及无GC方法
  • “探索Linux世界:从CentOS安装到常见命令使用“
  • es的写入过程
  • go append函数以及写入
  • javascript 总结(常用工具类的封装)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • socket.io+express实现聊天室的思考(三)
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 讲清楚之javascript作用域
  • 前端存储 - localStorage
  • 前嗅ForeSpider中数据浏览界面介绍
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一文看透浏览器架构
  • Prometheus VS InfluxDB
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #QT(TCP网络编程-服务端)
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (14)Hive调优——合并小文件
  • (5)STL算法之复制
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (办公)springboot配置aop处理请求.
  • (二)hibernate配置管理
  • (二十四)Flask之flask-session组件
  • (十六)一篇文章学会Java的常用API
  • (四)汇编语言——简单程序
  • (转)原始图像数据和PDF中的图像数据
  • ***详解账号泄露:全球约1亿用户已泄露
  • . NET自动找可写目录
  • ../depcomp: line 571: exec: g++: not found
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net Signalr 使用笔记
  • .Net Web窗口页属性
  • .net 获取url的方法
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET开发人员必知的八个网站
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .Net中wcf服务生成及调用
  • .skip() 和 .only() 的使用
  • :=
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节