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

K8S重启之后无法启动故障排查 与 修复

文章目录

  • K8S重启过程分析报告
    • 重启操作记录
      • 1. 初始状态检查
      • 2. 配置修复
      • 3. 组件启动观察
        • 第一轮启动 (15:08:00-15:08:30)
        • 第二轮状态 (15:08:30-15:09:00)
    • 关键问题分析
      • 1. etcd连接问题
      • 2. etcd异常退出
      • 3. 网络插件依赖问题
    • 完整故障流程
    • 核心问题总结
      • 主要故障点
      • 影响范围
      • 建议修复方案

K8S重启过程分析报告

重启操作记录

1. 初始状态检查

  • 执行时间: 2025-11-07 15:07
  • 检查静态Pod配置文件: /etc/kubernetes/manifests/
  • 发现etcd.yaml存在配置问题: 包含重复的readinessProbe配置

2. 配置修复

  • 恢复etcd原始配置: cp /etc/kubernetes/manifests/etcd.yaml.backup /etc/kubernetes/manifests/etcd.yaml
  • 修改startupProbe时间参数: initialDelaySeconds=10, periodSeconds=10
  • 重启kubelet服务: systemctl restart kubelet

3. 组件启动观察

第一轮启动 (15:08:00-15:08:30)
  • etcd: ✅ 成功启动 (容器ID: 3a35af5e98b3f)
  • kube-apiserver: ✅ 成功启动 (容器ID: ce533d077482f)
  • kube-controller-manager: ✅ 成功启动
  • kube-scheduler: ❌ 启动失败,后重新启动成功
第二轮状态 (15:08:30-15:09:00)
  • etcd: ❌ 异常退出 (收到终止信号)
  • kube-apiserver: ❌ 连接etcd失败,异常退出
  • kube-controller-manager: ❌ CrashLoopBackOff
  • kube-scheduler: ❌ 异常退出

关键问题分析

1. etcd连接问题

症状:

  • API服务器日志显示: connection error: desc = "transport: Error while dialing: dial tcp 127.0.0.1:2379: connect: connection refused"
  • 端口检查: 2379端口未监听,仅2381端口监听

根本原因:

  • etcd配置文件中listen-client-urls设置为监听2379端口
  • 但实际etcd容器启动后未监听2379端口
  • 导致API服务器无法连接etcd存储

2. etcd异常退出

症状:

  • etcd容器收到终止信号后正常关闭
  • 日志显示: received signal; shutting down

可能原因:

  • kubelet健康检查失败导致Pod重启
  • 系统资源不足或配置问题

3. 网络插件依赖问题

症状:

  • kubelet日志显示Calico网络插件错误
  • 错误: dial tcp 10.96.0.1:443: connect: connection refused

根本原因:

  • Calico尝试连接API服务器(10.96.0.1:443)失败
  • 因为API服务器依赖etcd,而etcd未正常运行
  • 形成循环依赖: API服务器需要etcd,网络插件需要API服务器

完整故障流程

1. 重启kubelet↓
2. etcd启动成功,但未监听2379端口↓
3. API服务器启动,尝试连接etcd:2379失败↓
4. API服务器异常退出↓
5. Controller Manager和Scheduler因API服务器不可用而失败↓
6. 网络插件(Calico)因无法连接API服务器而失败↓
7. kubelet因健康检查失败重启etcd↓
8. 所有核心组件进入CrashLoopBackOff状态↓
9. K8S集群完全不可用

核心问题总结

主要故障点

  1. etcd端口监听异常 - 配置监听2379端口但实际未监听
  2. 组件依赖链断裂 - etcd→API服务器→其他组件的依赖关系中断
  3. 网络插件循环依赖 - 网络需要API服务器,API服务器需要etcd存储

影响范围

  • ✅ etcd: 可启动但无法提供客户端服务
  • ❌ kube-apiserver: 无法连接etcd存储
  • ❌ kube-controller-manager: 无法连接API服务器
  • ❌ kube-scheduler: 无法连接API服务器
  • ❌ 网络插件: 无法连接API服务器配置服务
  • ❌ DNS服务: 依赖网络插件和API服务器
  • ❌ 整个K8S集群: 完全不可用

建议修复方案

  1. 检查etcd配置和证书,确保2379端口正常监听
  2. 验证etcd数据目录权限和完整性
  3. 检查系统资源(内存、磁盘)是否充足
  4. 考虑重新初始化etcd集群数据
  5. 按顺序重启组件: etcd→API服务器→Controller Manager→Scheduler→网络插件
http://www.dtcms.com/a/582871.html

相关文章:

  • 咸阳专业学校网站建设深圳建筑设计找工作哪个招聘网站
  • 企业营销网站建设规划江西 网站 建设 开发
  • 快速CAD转到PPT的方法,带教程
  • 分布式系统中处理跨服务事务的常见方案
  • 浙江网站建设企业江苏省建设厅 标准化网站
  • html网站开发实例教程做网站的网页
  • 生活用品:为生活量身定制的温柔
  • wordpress手机端网站网站建设知识文章
  • 网站关键词优化是什么郑州关键词排名外包
  • 3dmax物体分段分离切片及转换虚线
  • 注册网站建设开发文件上传网站源码
  • 深入理解 AVL 树:自平衡二叉搜索树的原理与实现
  • py day33 异常处理
  • 网站开发 相册网站备案 地域
  • 基于asp网站开发 论文装潢设计网站
  • 算法763. 划分字母区间
  • JVM组件协同工作机制详解
  • 使用 FastAPI+FastCRUD 快速开发博客后端 API 接口
  • 网站底部版权信息网页游戏开服表大全
  • 系统运维Day02_数据同步服务
  • 与设计行业相关的网站四川省住房与城乡建设厅网站
  • 深圳市设计网站缪斯设计网站
  • 现在还有做系统的网站吗wordpress摄影主题 lens
  • OLEDB连接对象介绍(一)
  • 【申论】申论基础知识
  • 商务网站建设调研host wordpress
  • 一款AB实验分析智能体是如何诞生的
  • 你的MES系统,是在“记录过去”还是在“指挥未来”?
  • FPGA教程系列-Vivado中串行FIR设计(非FIR核)
  • I2C接口(2):IIC多主设备仲裁机制详解--从原理到Verilog实现