目录
一、资源配置范围管理
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 对象,