微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【K8s任务】为命名空间配置 CPU 最小和最大约束

参考:https://kubernetes.io/zh/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace/

创建 LimitRange

这里给出了 LimitRange 的配置文件

apiVersion: v1
kind: LimitRange
Metadata:
  name: cpu-min-max-demo-lr
spec:
  limits:
  - max:
      cpu: "800m"
    min:
      cpu: "200m"
    type: Container

输出结果显示 cpu 的最小和最大限制符合预期。但需要注意的是,尽管你在 LimitRange 的配置文件中你没有声明认值,认值也会被自动创建。

limits:
- default:
    cpu: 800m
  defaultRequest:
    cpu: 800m
  max:
    cpu: 800m
  min:
    cpu: 200m
  type: Container

说明: 当创建 LimitRange 对象时,你也可以声明大页面和 GPU 的限制。 当这些资源同时声明了 'default' 和 'defaultRequest' 参数时,两个参数值必须相同。

尝试创建一个超过最大 cpu 限制的 Pod

输出结果表明 Pod 没有创建成功,因为容器声明的 cpu 限制太大了:

Error from server (Forbidden): error when creating "examples/admin/resource/cpu-constraints-pod-2.yaml":
pods "constraints-cpu-demo-2" is forbidden: maximum cpu usage per Container is 800m, but limit is 1500m.

尝试创建一个不满足最小 cpu 请求的 Pod

输出结果显示 Pod 没有创建成功,因为容器声明的 cpu 请求太小了:

Error from server (Forbidden): error when creating "examples/admin/resource/cpu-constraints-pod-3.yaml":
pods "constraints-cpu-demo-4" is forbidden: minimum cpu usage per Container is 200m, but request is 100m.

创建一个没有声明 cpu 请求和 cpu 限制的 Pod

因为你的 Container 没有声明自己的 cpu 请求和限制,LimitRange 给它指定了 认的 cpu 请求和限制

此时,你的容器可能运行也可能没有运行。 回想一下,本任务的先决条件是你的节点要有 1 个 cpu。 如果你的每个节点仅有 1 个 cpu,那么可能没有任何一个节点可以满足 800 millicpucpu 请求。 如果你在用的节点恰好有两个 cpu,那么你才可能有足够的 cpu 来满足 800 millicpu 的请求。

cpu 最小和最大限制的强制执行

只有当 Pod 创建或者更新时,LimitRange 为命名空间规定的 cpu 最小和最大限制才会被强制执行。 如果你对 LimitRange 进行修改,那不会影响此前创建的 Pod。

最小和最大 cpu 限制范围的动机

作为集群管理员,你可能想设定 Pod 可以使用的 cpu 资源限制。例如:

  • 集群中的每个节点有两个 cpu。你不想接受任何请求超过 2 个 cpu 的 Pod,因为集群中没有节点可以支持这种请求。
  • 你的生产和开发部门共享一个集群。你想允许生产工作负载消耗 3 个 cpu, 而开发部门工作负载的消耗限制为 1 个 cpu。 你可以为生产和开发创建不同的命名空间,并且为每个命名空间都应用 cpu 限制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐