编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

kubernetes资源管理之请求(requests)和上限(limits)

wxchong 2024-08-31 04:01:35 开源技术 9 ℃ 0 评论

在创建 pod 的时候,可以指定每个容器的 Requests 和 Limits 两个字段,下面是一个实例:

resources:
 requests:
 memory: "64Mi"
 cpu: "250m"
 limits:
 memory: "128Mi"
 cpu: "500m"

Requests 是容器请求要使用的资源,kubernetes 会保证 pod 能使用到这么多的资源。请求的资源是调度的依据,只有当节点上的可用资源大于 pod 请求的各种资源时,调度器才会把 pod 调度到该节点上(如果 CPU 资源足够,内存资源不足,调度器也不会选择该节点)。

需要注意的是,调度器只关心节点上可分配的资源,以及节点上所有 pods 请求的资源,而不关心节点资源的实际使用情况,换句话说,如果节点上的 pods 申请的资源已经把节点上的资源用满,即使它们的使用率非常低,比如说 CPU 和内存使用率都低于 10%,调度器也不会继续调度 pod 上去。不管pod

使用多少资源,kubernetes都会将requests的资源进行预留

Limits 是 pod 能使用的资源上限,是实际配置到内核 cgroups 里面的配置数据。对于内存来说,会直接转换成 docker run 命令行的 --memory 大小,最终会配置到 cgroups 对应任务的 /sys/fs/cgroup/memory/……/memory.limit_in_bytes文件中。

NOTE:如果 limit 没有配置,则表明没有资源的上限,只要节点上有对应的资源,pod 就可以使用。

使用 requests 和 limits 概念,我们能分配更多的 pod,提升整体的资源使用率。但是这个体系有个非常重要的问题需要考虑,那就是怎么去准确地评估 pod 的资源 requests?如果评估地过低,会导致应用不稳定;如果过高,则会导致使用率降低。这个问题需要开发者和系统管理员共同讨论和定义。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表