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

Kubernetes资源申请沾满但是实际的资源占用并不多,是怎么回事?

Kubernetes资源申请沾满但是实际的资源占用并不多是Kubernetes资源管理中的一个常见误解。

K8s资源管理机制

资源请求(Requests) vs 实际使用量

从你的截图可以看到:

K8s节点资源状态(第一张图):

  • CPU请求量:13795m (87%) - 接近资源不足
  • 内存请求量:31397079040 (95%) - 接近资源不足

实际系统资源使用(第二张图):

  • 负载很低:load average 1.15, 1.03, 1.14
  • CPU使用率很低
  • 内存使用量也不高

关键概念解释

1. 资源请求(Requests) ≠ 实际使用量

# Pod资源定义示例
resources:requests:    # 调度器保证分配的资源cpu: 500mmemory: 1Gilimits:      # 容器能使用的最大资源cpu: 1000mmemory: 2Gi

2. K8s调度逻辑

  • 调度依据:基于requests进行调度决策
  • 实际使用:Pod可能只用很少的资源
  • 资源预留:系统为每个Pod预留了请求的资源

常见原因

1. 资源请求过度配置

# 检查资源请求配置
kubectl describe pod <pod-name> | grep -A 10 "Requests"

2. 应用负载波动性

  • 应用可能在特定时间需要更多资源
  • 为了保证服务质量,设置了较高的requests

3. 安全边界设置

  • 为避免资源竞争,设置了较保守的资源请求

解决方案

1. 优化资源请求配置

# 分析实际资源使用情况
kubectl top pods --all-namespaces
kubectl top nodes

2. 使用VPA (Vertical Pod Autoscaler)

apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:name: my-app-vpa
spec:targetRef:apiVersion: apps/v1kind: Deploymentname: my-appupdatePolicy:updateMode: "Auto"

3. 监控和调整

# 查看详细的资源分配情况
kubectl describe node | grep -A 5 "Allocated resources"

建议做法

  1. 监控实际使用量:建立长期监控,了解真实资源需求
  2. 逐步调整requests:根据实际使用情况调整资源请求
  3. 使用HPA/VPA:实现动态资源调整
  4. 设置合理的limits:防止单个容器占用过多资源

总结:K8s报告的"资源不足"是指可分配的资源配额用完了,而不是物理资源用完了。这是K8s确保服务质量和避免资源竞争的保护机制。

http://www.lryc.cn/news/2394493.html

相关文章:

  • 鲲鹏Arm+麒麟V10 K8s 离线部署教程
  • PGSQL结合linux cron定期执行vacuum_full_analyze命令
  • php 中使用MQTT
  • C#定时器深度对比:System.Timers.Timer vs System.Threading.Timer性能实测与选型指南
  • go的select多路复用
  • 深度理解与剖析:前端声明式组件系统
  • 解决8080端口被占问题
  • 介绍一种LDPC码译码器
  • 3DMAX+Photoshop教程:将树木和人物添加到户外建筑场景中的方法
  • 【IOS】【OC】【应用内打印功能的实现】如何在APP内实现打印功能,连接本地打印机,把想要打印的界面打印成图片
  • 随记 配置服务器的ssl整个过程
  • 数据库高可用架构设计:集群、负载均衡与故障转移实践
  • Correlations氛围测试:文本或图像的相似度热图
  • 从0到1:多医院陪诊小程序开发笔记(上)
  • 建立连接后 TCP 请求卡住
  • 尚硅谷redis7 99 springboot整合redis之连接集群
  • hive 笔记
  • 无线通信模块简介
  • Go语言之空接口与类型断言
  • 把 CURSOR 的工具活动栏改成和 VSCODE 一样的左侧展示
  • 碰一碰系统源码搭建==saas系统
  • 不加载PHP OpenTelemetry SDK实现Trace‌与Logs
  • Three.js搭建小米SU7三维汽车实战(6)颜色切换
  • mysql慢sql的实际处理方案之一
  • GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【六】
  • c/c++的opencv车牌识别
  • 4.2.3 Spark SQL 手动指定数据源
  • 【论文解读】CVPR2023 PoseFormerV2:3D人体姿态估计(附论文地址)
  • WPF的交互核心:命令系统(ICommand)
  • Maven工程演示