ydswin

忘记背后,努力面前的,向着标杆直跑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

k8s中什么是cpu请求,cpu限制,内存请求,内存限制,及与QoS的关系

在 Kubernetes (k8s) 中,资源管理是确保集群稳定性和性能的关键。Kubernetes 通过 CPU 请求(CPU Requests)CPU 限制(CPU Limits)内存请求(Memory Requests)内存限制(Memory Limits) 来管理 Pod 的资源使用。这些资源设置与 服务质量(QoS,Quality of Service) 密切相关,直接影响 Pod 的调度、资源分配和驱逐策略。


1. CPU 请求(CPU Requests)

  • 定义
    CPU 请求是 Pod 对 CPU 资源的最小需求。Kubernetes 调度器会根据节点的可用 CPU 资源来调度 Pod,确保节点能够满足 Pod 的 CPU 请求。
  • 作用
    • 调度依据:Kubernetes 调度器会确保节点的可用 CPU 资源 ≥ Pod 的 CPU 请求。
    • 资源保障:Pod 在运行时至少可以获得请求的 CPU 资源。
  • 单位
    • 1 个 CPU 核心 = 1000m(毫核),例如 500m 表示 0.5 个 CPU 核心。
  • 示例
    resources:
      requests:
        cpu: "500m"
    

2. CPU 限制(CPU Limits)

  • 定义
    CPU 限制是 Pod 可以使用的 CPU 资源的最大值。Pod 的 CPU 使用量不能超过此限制。
  • 作用
    • 防止 Pod 过度占用 CPU 资源,影响其他 Pod 或节点的稳定性。
    • Kubernetes 使用 Cgroups 来强制执行 CPU 限制。
  • 单位
    • 与 CPU 请求相同,单位为毫核(m)。
  • 示例
    resources:
      limits:
        cpu: "1000m"
    

3. 内存请求(Memory Requests)

  • 定义
    内存请求是 Pod 对内存资源的最小需求。Kubernetes 调度器会根据节点的可用内存资源来调度 Pod,确保节点能够满足 Pod 的内存请求。
  • 作用
    • 调度依据:Kubernetes 调度器会确保节点的可用内存资源 ≥ Pod 的内存请求。
    • 资源保障:Pod 在运行时至少可以获得请求的内存资源。
  • 单位
    • 可以使用 Mi(兆字节)或 Gi(千兆字节),例如 512Mi 表示 512 兆字节。
  • 示例
    resources:
      requests:
        memory: "512Mi"
    

4. 内存限制(Memory Limits)

  • 定义
    内存限制是 Pod 可以使用的内存资源的最大值。Pod 的内存使用量不能超过此限制。
  • 作用
    • 防止 Pod 过度占用内存资源,导致节点内存耗尽(OOM,Out Of Memory)。
    • Kubernetes 使用 Cgroups 来强制执行内存限制。
  • 单位
    • 与内存请求相同,单位为 MiGi
  • 示例
    resources:
      limits:
        memory: "1Gi"
    

5. QoS(服务质量)

Kubernetes 根据 Pod 的资源请求和限制,将 Pod 分为三种 QoS 类别:GuaranteedBurstableBestEffort。QoS 类别决定了 Pod 在资源紧张时的优先级和驱逐策略。

QoS 类别

  1. Guaranteed(保证型)

    • 条件
      • Pod 中的所有容器都设置了 CPU 和内存的请求和限制。
      • 每个容器的 CPU 请求 = CPU 限制,且内存请求 = 内存限制。
    • 特点
      • 最高优先级,Kubernetes 会尽量保证这类 Pod 的资源需求。
      • 在资源不足时,最不容易被驱逐。
    • 示例
      resources:
        limits:
          cpu: "1000m"
          memory: "1Gi"
        requests:
          cpu: "1000m"
          memory: "1Gi"
      
  2. Burstable(突发型)

    • 条件
      • Pod 中的至少一个容器设置了 CPU 或内存的请求或限制,但不满足 Guaranteed 的条件。
    • 特点
      • 中等优先级,可以临时使用额外的资源(突发)。
      • 在资源不足时,可能会被驱逐。
    • 示例
      resources:
        limits:
          memory: "1Gi"
        requests:
          cpu: "500m"
      
  3. BestEffort(尽力而为型)

    • 条件
      • Pod 中的所有容器都没有设置 CPU 或内存的请求和限制。
    • 特点
      • 最低优先级,资源使用不受保障。
      • 在资源不足时,最先被驱逐。
    • 示例
      resources: {}
      

QoS 与资源管理的关系

  • 调度
    Kubernetes 调度器根据 Pod 的资源请求(CPU 和内存)选择适合的节点。
  • 资源分配
    Pod 在运行时至少可以获得请求的资源,但不能超过限制。
  • 驱逐策略
    当节点资源不足时,Kubernetes 会根据 QoS 类别决定哪些 Pod 被驱逐:
    • BestEffort Pod 最先被驱逐。
    • Burstable Pod 次之。
    • Guaranteed Pod 最后被驱逐。

总结

  • CPU 请求内存请求 是 Pod 对资源的最小需求,用于调度和资源保障。
  • CPU 限制内存限制 是 Pod 对资源的最大使用量,用于防止资源过度占用。
  • QoS 根据资源请求和限制将 Pod 分为 Guaranteed、Burstable 和 BestEffort 三类,决定了 Pod 的优先级和驱逐顺序。

通过合理设置资源请求和限制,可以优化 Kubernetes 集群的资源利用率,并确保关键应用的稳定性。

posted on   dashery  阅读(637)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略
点击右上角即可分享
微信分享提示