K8s 常见故障案例分析

#作者:程宏斌

文章目录

  • 一、节点故障
    • (一)节点 NotReady 状态
    • 排查步骤
    • 解决方案
  • 二、Pod 故障
    • (一)Pod 一直处于 Pending 状态
    • 排查步骤
    • 解决方案
    • (二)Pod 频繁重启
    • 故障现象
    • 排查步骤
    • 解决方案
  • 三、控制器故障
    • (一)Deployment 无法创建 Pod
    • 故障现象
    • 排查步骤
    • 解决方案
  • 四、网络故障
    • (一)Pod 之间无法通信
    • 排查步骤
    • 解决方案
  • 五、存储故障
    • 排查步骤
    • 解决方案
  • 六、总结

在这里插入图片描述
在 Kubernetes(K8s)集群的日常运维中,各种故障时有发生。本文将针对 K8s 中常见的故障案例进行详细分析,包括故障现象、排查步骤和解决方案,为运维人员提供参考。

一、节点故障

(一)节点 NotReady 状态

故障现象
通过kubectl get nodes命令查看节点状态时,发现某个节点处于 NotReady 状态,导致该节点上的 Pod 无法正常运行。

排查步骤

  1. 登录到该节点,检查 Kubelet 服务状态,执行systemctl status kubelet命令,查看是否存在服务未启动或异常退出的情况。
  2. 检查节点的网络连接,使用ping命令测试与集群中其他节点及 API Server 的连通性。
  3. 查看节点的资源使用情况,执行top或free -m等命令,检查 CPU、内存、磁盘等资源是否耗尽。
  4. 检查 Kubelet 的日志,执行journalctl -u kubelet -f命令,查找可能的错误信息。

解决方案

  1. 如果 Kubelet 服务未启动,执行systemctl start kubelet命令启动服务;如果服务异常,根据日志信息排查问题,可能需要重启服务或修复配置文件。
  2. 若网络存在问题,检查网络配置,修复网络连接,确保节点能够正常与其他组件通信。
  3. 当资源耗尽时,清理节点上不必要的进程或服务,释放资源;如果是长期资源不足,考虑扩容节点。

二、Pod 故障

(一)Pod 一直处于 Pending 状态

故障现象
创建 Pod 后,通过kubectl get pods命令查看,发现 Pod 长时间处于 Pending 状态,无法进入 Running 状态。

排查步骤

  1. 执行kubectl describe pod <pod名称>命令,查看事件信息,了解 Pod 调度失败的原因,可能是节点资源不足、节点亲和性不满足等。
  2. 检查集群中节点的资源情况,执行kubectl describe nodes命令,查看节点的可分配资源是否满足 Pod 的需求。
  3. 查看 Pod 的亲和性和反亲和性配置,确认是否存在配置错误导致无法调度。

解决方案

  1. 若节点资源不足,可扩容节点或调整 Pod 的资源请求和限制;若存在节点亲和性问题,修正亲和性配置。

(二)Pod 频繁重启

故障现象

Pod 在运行过程中频繁重启,通过kubectl get pods命令可看到 RESTARTS 字段数值不断增加。

排查步骤

  1. 执行kubectl logs <pod名称> --previous命令,查看 Pod 重启前的日志,寻找错误信息。
  2. 检查 Pod 的健康检查配置(livenessProbe 和 readinessProbe),确认是否因健康检查失败导致重启。
  3. 查看容器的资源使用情况,是否因资源限制导致容器被 Kill。

解决方案

  1. 根据日志中的错误信息修复应用程序的问题;若健康检查配置不合理,调整检查参数;若资源限制过低,适当提高资源限制。

三、控制器故障

(一)Deployment 无法创建 Pod

故障现象

创建 Deployment 后,没有 Pod 被创建,通过kubectl get deployments命令查看,发现 Deployment 的 replicas 数量未达到预期。

排查步骤

  1. 执行kubectl describe deployment <deployment名称>命令,查看事件信息,了解无法创建 Pod 的原因,可能是镜像拉取失败、配置错误等。
  2. 检查 Deployment 的配置文件,确认镜像名称、标签选择器等配置是否正确。
  3. 检查集群的镜像仓库是否可达,以及镜像是否存在。

解决方案

  1. 若镜像拉取失败,检查镜像仓库地址和认证信息,确保能够正常拉取镜像;若配置错误,修正 Deployment 的配置文件。

四、网络故障

(一)Pod 之间无法通信

故障现象
集群中的两个 Pod 无法进行通信,如无法 ping 通或无法访问对方的服务。

排查步骤

1.检查 Pod 的网络配置,确认 Pod 是否获取到正确的 IP 地址,执行kubectl get pods -o wide命令查看。
2.检查节点之间的网络是否通畅,确保节点间的端口通信正常。
3.查看网络插件的状态,如 Calico、Flannel 等,确认网络插件运行正常。
4.检查网络策略(NetworkPolicy)是否限制了 Pod 之间的通信。

解决方案

1.若 Pod 未获取到正确的 IP 地址,重启网络插件或检查网络插件的配置;若节点网络不通,修复节点网络;若网络策略限制了通信,调整网络策略配置。

五、存储故障

(一)PersistentVolume(PV)无法绑定 PersistentVolumeClaim(PVC)
故障现象
创建 PVC 后,长时间处于 Pending 状态,无法与 PV 绑定。

排查步骤

  1. 执行kubectl describe pvc <pvc名称>命令,查看事件信息,了解绑定失败的原因,可能是没有合适的 PV、PV 与 PVC 的存储类不匹配等。
  2. 执行kubectl get pv命令,查看集群中可用的 PV,检查 PV 的容量、访问模式、存储类等是否与 PVC 匹配。

解决方案

1.若没有合适的 PV,创建符合要求的 PV;若存储类不匹配,调整 PVC 或 PV 的存储类配置。

六、总结

K8s 集群故障种类繁多,排查故障时需要结合日志、事件信息和相关命令进行综合分析。在日常运维中,应加强对集群的监控,及时发现潜在问题,并做好备份和应急处理预案,以提高集群的稳定性和可靠性。同时,不断积累故障排查经验,提升解决问题的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92296.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

半精度权重 及 Phi-3线性层的权重分布

半精度权重 我们可以使用张量的 to() 方法以及适当的类型 torch.float16,将权重转换为 FP16: torch.manual_seed(11) weights = torch.randn(1000) * .07 weights.min(),

Linux怎么安装Docker?环境怎么搭建?步骤是什么?如何配置?有哪些注意事项?出现问题怎么排除?

一、Docker简介与环境准备 1.1 什么是Docker Docker是一个开源的容器化平台&#xff0c;它使用Linux内核的cgroup&#xff0c;namespace以及OverlayFS类的UnionFS等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术。Docker能够自动执行重复性任务…

apiSQL网关调优:释放单节点的最大潜能

前言 在构建高性能、高可用的API服务时&#xff0c;apiSQL 提供了强大的集群部署模式&#xff0c;通过横向扩展来分散负载、提高吞吐量。然而&#xff0c;在某些场景下&#xff0c;我们同样需要关注并最大化单个节点的处理能力。当单个 apiSQL 网关节点需要处理高并发请求或承载…

【开源工具】网络交换机批量配置生成工具开发全解:从原理到实战(附完整Python源码)

🔥 【开源工具】网络交换机批量配置生成工具开发全解:从原理到实战(附完整Python源码) 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自每一个灵感闪现的夜晚。愿以开源之火,点亮前行之路。 🐋 希望大家…

【插件式微服务架构系统分享】之 解耦至上:gateway 网关与APISIX 网关的不同分工

【插件式微服务架构系统分享】之解耦至上&#xff1a;gateway 网关与APISIX 网关的不同分工作者&#xff1a;朱元禄一、一个比方 APISIX 就像是一个专业的高速公路收费站&#xff0c;不属于你公司自己造的路&#xff0c;而是专门为所有车辆&#xff08;流量&#xff09;设计的&…

【感知机】感知机(perceptron)学习算法例题及详解

感知机( perceptron )是二类分类的线性分类模型&#xff0c;其输入为实例的特征向量&#xff0c;输出为实例的类别&#xff0c;取1 和-1二值。感知机对应输入空间(特征空间)中将实例划分为正负两类的分离超平面&#xff0c;是一种判别模型。感知机是神经网络与支持向量机的基础…

Linux基础命令速查:从入门到精通

Linux常用命令指南一、操作系统概述1 . 什么是操作系统&#xff1f;2. 为什么需要操作系统&#xff1f;二、Linux基础命令1. 目录与文件操作2. 文件操作命令3. 文件查看命令4. 文本处理命令三、重定向1. 重定向符号四、Linux系统概念1. 文件系统特点2. 路径规则3. 通配符五、压…

一周学会Matplotlib3 Python 数据可视化-坐标轴 (Axis)

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…

防火墙安全作用及 firewalld 交互、端口配置

1. 防火墙在 Linux 系统安全中有哪些重要的作用&#xff1f;网络访问控制&#xff1b;隔离网络区域&#xff1b;抵御网络攻击&#xff1b;限制服务暴露&#xff1b;日志审计与溯源&#xff1b;隐藏内部网络结构。2. 简单说明一下firewalld。Firewalld服务是一种动态防火网管理器…

RabbitMQ削峰填谷详解:让系统在流量洪峰中“稳如泰山”

想象一下&#xff1a;双十一零点&#xff0c;千万用户同时点击下单按钮&#xff0c;服务器该如何应对&#xff1f;这就是削峰填谷要解决的难题。而RabbitMQ正是这场战役中的超级缓冲器&#xff01;一、什么是“峰”和“谷”&#xff1f; 峰&#xff1a;系统瞬时高并发&#xff…

数据库表字段命名建议和最佳实践

在设计数据库时&#xff0c;字段命名是至关重要的&#xff0c;它直接影响到数据库的可读性、可维护性和团队协作效率。以下是数据库字段命名的一些建议和最佳实践&#xff1a;1. 使用清晰且描述性的名称目的&#xff1a;确保字段名能够清晰地表达其含义&#xff0c;便于其他开发…

散点图矩阵

create_scatterplotmatrix对角线是直方图&#xff0c;但是框选无交互import plotly.figure_factory as fffig ff.create_scatterplotmatrix(df, diaghistogram, # 将对角线设置为直方图)fig.update_layout(autosizeTrue, # 让 Plotly 自动适应容器widthNone, # 设置宽度hei…

Linux驱动25 --- RkMedia音频API使用增加 USB 音视频设备

目录 一、RV1126 增加 USB 音视频设备 二、RkMedia 音频 API 2.1 PCM 音频输入 系统初始化 AI 通道配置 AI 通道使能 开启数据流 获取数据 保存数据 2.2 编码音频编码输入 2.3 PCM 音频输出 一、RV1126 增加 USB 音视频设备 配置过程 第一步&#xff1a;来到 SDK 内核路…

CETOL 6σ 帮助提升活检器械精度并降低制造成本

某全球医疗器械企业采用 Sigmetrix 的 CETOL 6σ 公差分析软件&#xff0c;针对一次性活检采集器械&#xff08;Biopsy Harvesting Instrument&#xff09;完成结构优化&#xff0c;成功解决颌骨动力学缺陷、4mm孔径精度控制及线缆传动敏感度等核心挑战&#xff0c;大大提高了活…

基于协同过滤算法的图书推荐系统设计与实现/基于python的图书推荐系统设计与实现/基于python的图书借阅系统设计与实现

基于协同过滤算法的图书推荐系统设计与实现采用django、vue技术用户&#xff1a;注册、登录、图书信息、公告信息、个人中心、借阅记录、归还记录、我的收藏。管理员&#xff1a;登录、用户、图书分类、图书信息、借阅记录、归还记录、系统管理、用户信息。

线程组和线程池的基本用法

1.线程组1.1创建线程组的方法public class xianchengzu {public static void main(String[] args) {ThreadGroup group new ThreadGroup("group");// 创建线程组时指定父线程组ThreadGroup parent new ThreadGroup("parent");ThreadGroup child new Thr…

百度华为硬件笔试机试题-卷4

百度华为硬件笔试机试题-卷4 收集整理了以下30道选择题和判断题,涵盖电源管理、功率放大、半导体器件、数字逻辑、信号处理和电磁理论等领域。题目涉及复杂计算和分析,给出了参考答案和详细的解析,非常适合硬件工程师笔试机试准备。 选择题 1. 电源纹波主要测量什么值? …

38-TS之类型保护

关注大师不迷路,大师带你上高度~ 文章目录 前言 一、类型保护是什么? 二、使用步骤 1. 使用 typeof 操作符 2. 使用 instanceof 操作符 3. 自定义类型保护函数 4. 使用 in 操作符 总结 前言 关注大师不迷路,大师带你上高度~ 在前端开发中,JavaScript 的动态类型特性提供了…

win下安装labelimg

1、anconda安装python、qt的版本 conda create -n labelme python3.10.18 PyQt5 5.15.11 <pip> PyQt5-Qt5 5.15.2 <pip> PyQt5_sip 12.17.0 <p…

【Qt开发】常用控件(二) -> enabled

目录 1 -> 什么是 enabled 属性 2 -> API 3 -> 代码示例 3.1 -> 创建禁用状态按钮 3.2 -> 通过按钮切换按钮的禁用状态 1 -> 什么是 enabled 属性 在 Qt 中&#xff0c;enabled 是 QWidget 类的一个基础属性&#xff0c;它控制控件是否对用户输入做出响…