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

【故障排查】KubeSphere 无法连接:Connection Refused 与磁盘满导致的 API Server 崩溃

目录

1. 故障背景

2. 排查过程

第一步:定位 API Server 状态

第二步:查看关键日志

3. 根本原因分析

4. 解决方案

4.1 紧急恢复(释放空间)

4.2 恢复集群

5. 防范建议(长治久安)

总结

💡 提示:

1. 故障背景

在运维 Kubernetes 集群或使用 KubeSphere 平台时,突然发现执行kubectl命令报错,返回如下错误信息:

Bash

The connection to the server lb.kubesphere.local:6443 was refused - did you specify the right host or port?

同时,查看kubelet日志发现大量connection refused报错,且伴随着容器启动失败的异常。


2. 排查过程

第一步:定位 API Server 状态

首先尝试检查控制平面组件的状态。由于 API Server 无法连接,我们登录 master 节点通过底层运行时查看:

Bash

# 如果是 Docker 环境 docker ps | grep kube-apiserver # 如果是 Containerd 环境 crictl ps | grep kube-apiserver

发现 API Server 容器处于Exited状态,或者在不断重启。

第二步:查看关键日志

查看系统日志journalctl -u kubelet -f/var/log/messages,发现了导致崩溃的“真凶”:

Plaintext

CreateContainerConfigError: "write /var/lib/kubelet/pods/.../etc-hosts: no space left on device" rsyslogd: file '/var/log/messages' write error - OS error: No space left on device

这表明:Master 节点的磁盘空间已完全耗尽,导致kubelet无法为 Pod 创建必要的配置文件(如etc-hosts),进而导致 API Server 无法启动。


3. 根本原因分析

磁盘满导致 K8s 崩溃通常由以下几个原因引起:

  1. 日志文件过大/var/log/messages/var/log/pods下的容器日志未配置滚动清理。

  2. 镜像堆积:长期未清理无用的中间镜像或老旧版本镜像。

  3. KubeSphere 日志组件压力:Fluentbit 或 Vector 在采集大量业务报错日志时,缓存可能占满磁盘。

  4. 未限制容器日志配置:Docker 默认不限制单个容器日志大小。


4. 解决方案

4.1 紧急恢复(释放空间)

在磁盘 100% 的情况下,首先要腾出空间让系统“喘口气”:

  1. 清理 Journal 日志(只保留最近 1 小时):

    Bash
    journalctl --vacuum-time=1h
  2. 清理无用镜像/容器

    Bash
    # Docker 环境 docker system prune -a -f # Containerd 环境 crictl rmi --prune
  3. 清空大文件(而非直接删除)

    使用>定位并清空日志文件,避免因进程占用导致空间无法释放。

    Bash
    find /var/log -type f -size +500M -exec sh -c '> "{}"' \;

4.2 恢复集群

空间释放后,重启相关服务:

Bash

systemctl restart kubelet

等待几分钟,待 API Server 镜像重新拉起后,执行kubectl get nodes验证集群恢复。


5. 防范建议(长治久安)

为了防止此类问题再次发生,建议进行以下优化:

  • 配置 Docker 日志滚动:在/etc/docker/daemon.json中加入限制。

    JSON
    { "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } }
  • 磁盘预警:部署 Prometheus + Alertmanager 监控 master 节点的磁盘使用率,设置 80% 阈值报警。

  • 独立分区:建议将/var/lib/docker(或containerd) 挂载到独立的逻辑卷(LVM),防止容器数据撑爆系统盘。


总结

“Connection Refused” 只是表象,内核报错中的“No space left on device”才是根源。在维护 KubeSphere 等重型平台时,磁盘监控是稳定性的重中之重。

http://www.jsqmd.com/news/338832/

相关文章:

  • 告别校园IT“救火队”,用统一终端管理为教育减负
  • 把握审稿意见,提升论文录用率
  • P1855 榨取kkksc03
  • 当导弹在天上玩漂移:手把手调教气动力控制
  • 从崩溃到重生:解决 Anaconda 环境下 Poetry 安装的一系列“大坑”
  • 管家婆网店ERP调拨单里的调拨选项有什么区别
  • Avalonia-消息对话框
  • Claude Skills 安装和使用教程,小白也能上手。
  • 2026年国内准确、多层级、可洞察的泛监测平台产品推荐
  • AI落地不踩坑:大模型代理合作,提供大模型聚合平台,解锁高效适配新路径
  • Chrome现已集成Gemini,仅需4步即可开启。
  • 具身智能发展报告
  • 沃伦·巴菲特的公司文化评估方法
  • 深耕AI协同:大模型代理,让每一份创新都有底气
  • 基因过表达细胞系 | 稳定过表达开发 | 高表达克隆筛选
  • 一键化部署、标准化、闭环式的运营商数据安全泛监测管理方案
  • 用SQL执行累计值汇总的几种方法
  • 深入解析:OpenCV 颜色空间入门:从 BGR 到 HSV 的工程实践
  • 微信定时发消息,四个步骤轻松搞定
  • Thinkphp和Laravel框架的动物园售票信息管理系统沙箱支付
  • 做股权转让需要了解的四种税!
  • CF2003F Turtle and Three Sequences 题解 / 随机化
  • 冷库:连锁超市的“第二利润中心”
  • Thinkphp和Laravel框架的基于bs架构的智慧校园通作业互动系统的设计与实现
  • [N_160]基于springboot,vue校园论坛系统
  • 3_1_七段式SVPWM (零序注入法)算法理论与 MATLAB 实现详解
  • 【dz-710】基于单片机的智能衣柜设计
  • 【dz-711】基于单片机的浴室防雾镜设计
  • Staphylococcus Aureus Protein A (SpA)-Derived Peptide ;NVLGAPKKLNESEQAV
  • Thinkphp和Laravel框架的物流车辆货车配送路线信息管理系统