ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

二十四、k8s 资源管理

2026/9/16 16:42:56 拓冰建站 浏览量
二十四、k8s 资源管理

目录

一、资源配置范围管理

LimitRange介绍

1、LimitRange 可以做什么: 

2、 资源限制和请求的约束

3、创建LimitsRange对象 

4、示例:创建一个pod

5、测试用例 

测试1:

测试2:

测试3:

 二、资源服务质量管理(Requests Qos)

1、Qos级别分类:

1.1、Guaranteed:

1.2、BestEffort:

1.3、Burstable:

2、Qos的工作特点

3、示例

三、资源配额管理(Resource Quotas)

1、启用资源配额 

3.1、计算资源配额

3.2、存储资源配额

3.3、对象数量配额

2、配额的作用域(Quota Scopes)

3、基于优先级类(PriorityClass)来设置资源配额

4、资源配额定义

 四、ResourceQuota和LimitRange实践

五、节点的CPU管理策略

1、CPU管理策略

2、更改CPU管理策略

3、节点cpu管理策略示例


一、资源配置范围管理

LimitRange介绍

        在默认情况下,kubernetes不会对Pod做CPU和内存等资源限制,即kubernetes系统中任何Pod都可以使用其所在节点的所有可用的CPU 和内存。

        通过配置 Pod 的计算资源 Requests和 Limits,我们可以限制 Pod 的资源使用,配置最高要求和最低要求。

        但对于Kubernetes 集群管理员而言,为每一个 Pod 配置 Requests和Limits 是麻烦的,同时维护特别的不方便。需要考虑如何确保一个 Pod 不会垄断命名空间内所有可用的资源。

        更多时候,我们需要对集群内Requests和Limits的配置做一个全局限制。这里就要用到 Limitrange ,LimitRange 用来限制命名空间内 适用的对象类别 (例如 Pod 或 PersistentVolumeClaim) 指定的资源分配量(限制和请求)的一个策略对象。对 Pod 和容器的 Requests 和 Limits 配置做进一步做出限制。

1、LimitRange 可以做什么: 

  • 在一个命名空间中实施对每个 Pod 或 Container 最小和最大的资源使用量的限制。
  • 在一个命名空间中实施对每个 PersistentVolumeClaim 能申请的最小和最大的存储空间大小的限制。
  • 在一个命名空间中实施对一种资源的 申请值和限制值 的 比值的控制 。
  • 设置一个命名空间中对计算资源的默认申请/限制值,并且自动的在运行时注入到多个Container中。
  • 当某命名空间中有一个LimitRange对象时,会在该命名空间中实施 LimitRange 限制。

2、 资源限制和请求的约束

        管理员在一个命名空间内创建一个 LimitRange 对象。 用户在此命名空间内创建(或尝试创建) Pod 和 PersistentVolumeClaim 等对象。

        首先,LimitRanger 准入控制器对所有没有设置计算资源需求的所有 Pod(及其容器)设置默认请求值与限制值。也就是(limits 和 Request)

        其次,LimitRange 跟踪其使用量以保证没有超出命名空间中存在的任意 LimitRange 所定义的最小、最大资源使用量以及使用量比值。

        若尝试创建或更新的对象(Pod 和 PersistentVolumeClaim)违反了 LimitRange 的约束,向 API 服务器的请求会失败,并返回 HTTP 状态码 403 Forbidden以及描述哪一项约束被违反的消息。

        若你在命名空间中添加 LimitRange 启用了对 cpu 和 memory 等计算相关资源的限制(Max,Min), 你必须指定这些值的请求使用量 requests 与限制使用量 limits ,否则,系统将会拒绝创建 Pod,除非在 LimitRange 定义 默认的 ( limits 和 requests )。LimitRange 的 验证仅在 Pod 准入阶段进行,不对正在运行的 Pod 进行验证。 如果你添加或修改 LimitRange,命名空间中已存在的 Pod 将继续不变。如果命名空间中存在两个或更多 LimitRange 对象,