K8s Pod资源限制过高资源浪费优化实操
K8s Pod资源限制过高资源浪费优化实操技术栈Kubernetes v1.32.13 Rocky Linux 8.6 Containerd 1.7.x操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案K8s Pod资源限制过高资源浪费优化实操操作环境K8s 集群 3 节点k8s-master(192.168.1.10), k8s-node1(192.168.1.11), k8s-node2(192.168.1.12)K8s 版本 v1.32.13排障场景生产运维排障通用已部署完整K8s集群核心组件正常运行业务Pod已部署监控告警系统已配置操作系统 Rocky Linux 8.6容器运行时 Containerd 1.7.x网络插件 Calico存储已配置PVC已配置kubectl命令行工具具备集群管理员权限可访问所有命名空间和资源已配置监控系统PrometheusGrafana可查看集群指标、日志、事件便于排障定位对接原理K8s Pod资源限制过高资源浪费优化实操是 K8s 生产集群运维排障中的核心操作场景。K8s 集群排障遵循由表及里、逐层定位、快速恢复、根因根治的原则首先通过监控告警和用户反馈发现异常然后通过集群状态检查、日志分析、事件追踪、资源监控等手段逐层定位故障根因接着采取应急措施快速恢复业务最后进行根因修复和预防措施落地。生产运维排障通用排障的核心目标是确保集群高可用、业务连续性、数据安全性通过规范化的排障流程缩短故障恢复时间MTTR通过深度根因分析避免故障重复发生通过预防性巡检和监控告警提前发现隐患通过标准化SOP确保排障操作可复制可追溯。所有排障操作需遵循先备份后操作、先观察后变更、先灰度后全量的安全原则避免排障操作引发二次故障。详细步骤1. 故障现象确认与集群状态盘点# 1. 检查集群整体状态 kubectl get nodes -o wide kubectl get pods -A -o wide | head -50 kubectl get events -A --sort-by.lastTimestamp | tail -30 ​ # 2. 检查核心组件状态 kubectl get pods -n kube-system -o wide kubectl get componentstatuses 2/dev/null || kubectl get --raw/healthz?verbose ​ # 3. 检查集群资源使用 kubectl top nodes kubectl top pods -A --sort-bycpu | head -20 kubectl top pods -A --sort-bymemory | head -20 ​ # 4. 检查异常Pod kubectl get pods -A | grep -vE Running|Completed|NAME kubectl get pods -A -o wide | grep -E Pending|CrashLoop|Error|ImagePull|Terminating|OOMKilled ​ # 5. 检查节点状态详情 kubectl describe nodes | grep -A5 Conditions: kubectl get nodes -o jsonpath{.items[*].status.conditions[?(.typeReady)].status} ​ # 6. 检查集群事件 kubectl get events -A --sort-by.lastTimestamp | tail -50 kubectl get events -A --field-selector typeWarning | tail -30 ​ # 7. 检查网络状态 kubectl get svc -A kubectl get endpoints -A kubectl get ingress -A 2/dev/null ​ # 8. 检查存储状态 kubectl get pv kubectl get pvc -A kubectl get storageclass ​ # 9. 导出当前状态备份 kubectl get all -A -o yaml /tmp/cluster_state_$(date %Y%m%d_%H%M%S).yaml kubectl get nodes -o yaml /tmp/nodes_state_$(date %Y%m%d_%H%M%S).yaml echo 集群状态已备份到 /tmp/ ​2. 备份防护与排障方案制定# 1. 备份关键配置排障前必做 kubectl get cm -A -o yaml /tmp/cm_backup_$(date %Y%m%d_%H%M%S).yaml kubectl get secret -A -o yaml /tmp/secret_backup_$(date %Y%m%d_%H%M%S).yaml kubectl get deployment,statefulset,daemonset -A -o yaml /tmp/workload_backup_$(date %Y%m%d_%H%M%S).yaml kubectl get svc,ingress -A -o yaml /tmp/network_backup_$(date %Y%m%d_%H%M%S).yaml kubectl get pv,pvc -A -o yaml /tmp/storage_backup_$(date %Y%m%d_%H%M%S).yaml ​ # 2. 记录故障现象 echo 故障现象记录 $(date) /tmp/troubleshoot_log.txt echo 故障时间: $(date) /tmp/troubleshoot_log.txt echo 故障现象: /tmp/troubleshoot_log.txt echo 影响范围: /tmp/troubleshoot_log.txt echo 业务影响: /tmp/troubleshoot_log.txt cat /tmp/troubleshoot_log.txt ​ # 3. 制定排障方案 cat /tmp/troubleshoot_plan.md EOF # 排障方案 ## 一、故障现象 ## 二、影响范围评估 ## 三、排障步骤与时间窗口 ## 四、应急恢复措施 ## 五、根因定位方法 ## 六、修复方案 ## 七、验证标准 ## 八、回滚方案 ## 九、风险点与应对措施 EOF echo 排障方案模板已创建 ​ # 4. 确认业务窗口 echo 当前时间: $(date) echo 建议在业务低峰期执行排障操作避免影响业务 ​ # 5. 通知相关业务方 # echo K8s集群排障操作通知 | mail -s 集群排障通知 adminexample.com ​3. 逐层定位与根因分析# 1. 查看异常Pod详细信息 # kubectl describe pod pod-name -n namespace # kubectl logs pod-name -n namespace --tail100 # kubectl logs pod-name -n namespace --previous ​ # 2. 查看节点详细信息 # kubectl describe node node-name # 检查节点Conditions、资源、污点、标签、事件 ​ # 3. 查看核心组件日志 # kubectl logs -n kube-system component-pod --tail100 # kubectl logs -n kube-system component-pod --previous ​ # 4. 查看etcd状态 # kubectl exec -n kube-system etcd-node -- etcdctl endpoint health # kubectl exec -n kube-system etcd-node -- etcdctl member list # kubectl exec -n kube-system etcd-node -- etcdctl endpoint status --write-outtable ​ # 5. 查看网络连通性 # kubectl run -it --rm debug --imagebusybox --restartNever -- sh # 在容器内执行: nslookup, ping, wget, curl 等 ​ # 6. 查看存储挂载 # kubectl describe pvc pvc-name -n namespace # kubectl describe pv pv-name # 登录节点查看挂载: df -h, mount, dmesg ​ # 7. 查看kubelet状态 # 登录节点执行: systemctl status kubelet # journalctl -u kubelet -f --since 10 minutes ago ​ # 8. 查看容器运行时 # 登录节点执行: crictl ps -a # crictl logs container-id # crictl inspect container-id ​ # 9. 执行具体排障操作根据故障类型调整 echo 执行具体排障操作... echo 请根据排障方案执行具体步骤 ​ # 10. 应用修复配置 # kubectl apply -f /tmp/fix_config.yaml # kubectl rollout restart deployment/name -n namespace # kubectl rollout status deployment/name -n namespace --timeout120s ​4. 应急恢复与业务验证# 1. 验证集群状态 kubectl get nodes -o wide # 预期所有节点 Ready 状态 ​ # 2. 验证核心组件 kubectl get pods -n kube-system -o wide # 预期所有核心组件 Pod RunningREADY 正常 ​ # 3. 验证业务Pod kubectl get pods -A | grep -vE Running|Completed|NAME # 预期无异常Pod ​ # 4. 验证业务服务 # kubectl get svc -n namespace # kubectl get endpoints -n namespace # 预期Service 有对应 Endpoints ​ # 5. 验证网络连通性 # kubectl run -it --rm debug --imagebusybox --restartNever -- nslookup kubernetes.default # 预期DNS解析正常 # kubectl run -it --rm debug --imagebusybox --restartNever -- wget -O- http://service-name.namespace.svc.cluster.local # 预期服务访问正常 ​ # 6. 验证存储 kubectl get pvc -A # 预期PVC Bound 状态 # kubectl exec -it pod-with-pvc -- df -h # 预期存储挂载正常 ​ # 7. 验证资源使用 kubectl top nodes kubectl top pods -A --sort-bycpu | head -10 # 预期资源使用在合理范围内 ​ # 8. 验证监控告警 # 检查Prometheus Targets状态 # 检查Grafana面板数据 # 检查Alertmanager告警状态 # 预期监控正常无异常告警 ​ # 9. 验证业务功能 # 执行业务接口测试 # curl http://业务地址/health # 预期业务接口返回正常 ​ # 10. 清理调试资源 # kubectl delete pod debug --ignore-not-found # kubectl delete -f /tmp/debug_resources.yaml 2/dev/null echo 验证完成 ​5. 根因修复与预防配置# 1. 配置监控告警 # 检查Prometheus告警规则 # kubectl get cm -n monitoring prometheus-rules -o yaml 2/dev/null | head -100 ​ # 2. 配置日志采集 # 检查日志采集配置 # kubectl get cm -n logging -o name 2/dev/null | head -10 ​ # 3. 配置资源限制 # 检查Deployment资源限制 # kubectl get deployment -n namespace -o jsonpath{.items[*].spec.template.spec.containers[*].resources} ​ # 4. 配置高可用 # 检查副本数和反亲和性 # kubectl get deployment -n namespace -o jsonpath{.items[*].spec.replicas} # kubectl get deployment -n namespace -o jsonpath{.items[*].spec.template.spec.affinity} ​ # 5. 配置备份策略 # 检查etcd备份 # kubectl get cronjob -A 2/dev/null | grep -i backup # 检查PV快照 # kubectl get volumesnapshot -A 2/dev/null ​ # 6. 配置安全策略 # 检查RBAC权限 # kubectl get clusterrolebinding -o name | head -20 # 检查网络策略 # kubectl get networkpolicy -A 2/dev/null ​ # 7. 配置节点维护 # 检查节点污点和标签 # kubectl get nodes -o jsonpath{.items[*].spec.taints} # kubectl get nodes --show-labels ​ # 8. 配置升级策略 # 检查集群版本 # kubectl version --short # 检查节点版本 # kubectl get nodes -o jsonpath{.items[*].status.nodeInfo.kubeletVersion} ​6. 最终验证与排障报告# 1. 最终验证集群状态 kubectl get nodes -o wide kubectl get pods -A -o wide | grep -vE Running|Completed|NAME | wc -l # 预期异常Pod数为0 ​ # 2. 验证核心组件健康 kubectl get --raw/healthz?verbose 2/dev/null | head -20 # 预期所有健康检查通过 ​ # 3. 验证业务服务 # kubectl get svc -A # kubectl get endpoints -A # 预期所有Service有对应Endpoints ​ # 4. 验证监控数据 # 检查Prometheus指标 # kubectl port-forward -n monitoring svc/prometheus 9090:9090 # sleep 5 # curl -s http://localhost:9090/api/v1/query?queryup | jq .data.result | length # 预期指标数据正常 ​ # 5. 验证日志 # 检查日志采集 # kubectl logs -n logging fluentd-pod --tail10 2/dev/null # 预期日志正常采集 ​ # 6. 生成排障报告 echo 排障报告 /tmp/troubleshoot_report.txt echo 排障时间: $(date) /tmp/troubleshoot_report.txt echo 故障现象: /tmp/troubleshoot_report.txt echo 根因分析: /tmp/troubleshoot_report.txt echo 修复措施: /tmp/troubleshoot_report.txt echo 验证结果: /tmp/troubleshoot_report.txt echo 预防措施: /tmp/troubleshoot_report.txt echo 经验总结: /tmp/troubleshoot_report.txt cat /tmp/troubleshoot_report.txt ​ # 7. 清理临时文件 # rm -f /tmp/debug_*.yaml /tmp/troubleshoot_*.txt 2/dev/null # echo 临时文件已清理 ​ # 8. 清理port-forward # pkill -f port-forward 2/dev/null echo 排障完成 ​验证流程# 1. 集群状态验证 kubectl get nodes -o wide # 预期所有节点 Ready ​ # 2. 核心组件验证 kubectl get pods -n kube-system -o wide # 预期所有核心组件 Running ​ # 3. 业务Pod验证 kubectl get pods -A | grep -vE Running|Completed|NAME # 预期无异常Pod ​ # 4. 服务连通性验证 # kubectl run -it --rm debug --imagebusybox --restartNever -- nslookup kubernetes.default # 预期DNS正常 ​ # 5. 资源使用验证 kubectl top nodes kubectl top pods -A --sort-bycpu | head -10 # 预期资源合理 ​ # 6. 监控告警验证 # 检查Prometheus/Grafana/Alertmanager状态 # 预期监控正常 ​ # 7. 业务功能验证 # curl http://业务地址/health # 预期业务正常 ​ # 8. 排障报告验证 cat /tmp/troubleshoot_report.txt # 预期报告完整 ​排错方案集群整体可用性问题检查节点状态、核心组件、网络、存储、资源、监控、告警、高可用、容灾、SLA业务中断故障检查应用状态、Pod、Service、Ingress、依赖、资源、网络、存储、配置、日志、监控、定位、恢复运维操作失误检查操作记录、变更、回滚、备份、影响范围、恢复流程、验证、复盘、改进、SOP监控告警异常检查监控组件、采集、存储、查询、告警规则、通知渠道、静默、抑制、误报、漏报、定位、修复日志异常检查日志采集、存储、轮转、查询、聚合、格式、级别、丢失、爆满、资源、定位、修复安全事件检查审计日志、异常访问、权限变更、漏洞、入侵、数据泄露、应急响应、隔离、取证、修复、复盘容量规划检查资源使用率、增长趋势、业务预测、扩容计划、成本、性能、瓶颈、监控、预警、优化运维标准化检查SOP、文档、流程、自动化、监控、告警、备份、容灾、安全、合规、持续改进、最佳实践

相关新闻

速卖通多店管理浏览器怎么选?拆解团队权限管理

速卖通多店管理浏览器怎么选?拆解团队权限管理

速卖通多店管理的难点,不在店铺本身,而在人:店一多,谁来管哪家、权限给多少、交接怎么办,这些事比开店更麻烦。管不好,轻则效率低,重则账号出错、责任不清。 速卖通多店管理浏览器 解决的就是多…

2026/10/14 18:23:38 阅读更多 →
历史人物视频画面趋同问题的本地素材替换流程

历史人物视频画面趋同问题的本地素材替换流程

要解决历史人物视频画面趋同、缺少辨识度的问题,比较务实的做法不是换一个生成模型,而是先把文稿拆成分镜,再把本地实拍、老照片扫描件等自有素材接入自动成片流程。花生AI可以作为这类工作流中的一个可选方案。 一、为什么历史人物视频不适合…

2026/10/19 11:19:56 阅读更多 →
2027届大数据管理与应用秋招:物流运营面试的数据分析思路拆解

2027届大数据管理与应用秋招:物流运营面试的数据分析思路拆解

先说判断:面试官问履约效率,想听的不是你懂大数据,而是你懂履约。 大数据管理与应用专业的优势不在算法,在于能把一个模糊的效率问题拆成可量化的环节,再定位到具体节点。京东物流2027届新锐之星的综合运营管理方向定位…

2026/10/15 3:11:51 阅读更多 →

最新新闻

Python+OpenCV双目视觉尺寸测量:从标定到平面拟合的完整实战

Python+OpenCV双目视觉尺寸测量:从标定到平面拟合的完整实战

简介:这是一套面向计算机视觉初学者、课程实践者与期末作业需求者的双目立体视觉尺寸测量方案,基于Python与OpenCV实现,通过双摄像头采集图像计算目标物体的高度、宽度等物理尺寸,稍作调整还可扩展距离测量功能,适用于…

2026/10/20 10:55:52 阅读更多 →
网络基础

网络基础

IP 地址规划(VLSM / CIDR / 汇总)→ 分层模型(OSI、TCP/IP)→ 各层协议与头部(以太网帧、TCP/UDP、IP)→ 华为 VRP 基础操作一、IP 地址规划:VLSM、CIDR 与路由汇总1. VLSM —— 可变长子网掩码…

2026/10/20 10:55:52 阅读更多 →
非全硕士的学历在学信网怎么查,认证和存档别踩坑

非全硕士的学历在学信网怎么查,认证和存档别踩坑

有个读者拿到非全硕士证后跑来问我:学信网上到底能不能查到、要不要做学历认证、档案放哪儿才不白读。这类问题我常被问,尤其在职读出来的,怕花了时间、临到认证或存档时出岔子。我把流程捋一遍。 先给定心丸:正规院校的非全日制硕…

2026/10/20 10:55:52 阅读更多 →
C语言链表实现学生信息管理系统:节点设计、增删改查与内存管理实战

C语言链表实现学生信息管理系统:节点设计、增删改查与内存管理实战

链表实现学生信息管理系统,这题目我前前后后碰过不止一回。大学第一轮学数据结构时,它在课程设计清单里排第三;后来帮别人看代码时,发现十个有九个都在同一批节点指针、空链表和内存释放的坑里打转。第一次写完这个系统&#xff0…

2026/10/20 10:55:52 阅读更多 →
高级 | 软件架构设计错题集【2】

高级 | 软件架构设计错题集【2】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:55:52 阅读更多 →
把 QQ空间历史说说 导出到 Excel:GetQzonehistory 实操指南

把 QQ空间历史说说 导出到 Excel:GetQzonehistory 实操指南

把 QQ空间历史说说 导出到 Excel:GetQzonehistory 实操指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 用于把 QQ空间的历史说说完整导出到本地 Excel&…

2026/10/20 10:54:45 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →