温锦文欧普厨电及净水器总代理 发表于 2024-5-15 00:02:53

k8s资源限制之LimitRange和ResourceQuota

在Kubernetes中,LimitRange和ResourceQuota都是用于资源管理的工具,但它们的目标、作用范围和使用方式有所差别。
作用范围

LimitRange是在Pod和容器级别上进行资源限制的工具,重要用于设定CPU和内存两种计算资源的可用范围,并且还可以支持在PersistentVolumeClaim资源级别设定存储空间的范围限制。ResourceQuota则作用于命名空间级别,用于限制命名空间中的资源使用量,例如Pod的数量、特定类型的资源对象的数量(如Services、Deployments等)以及命名空间内所有Pod可以使用的计算资源总量(如CPU、内存等)。
关注点

LimitRange重要关注资源的最小和最大限制,以确保公平性,例如设定Pod或容器的requests和limits属性必须在指定的资源范围内,否则将会被拒绝。而ResourceQuota重要关注资源的总量和分配,旨在防止资源的过度消耗和竞争,确保在多用户共享Kubernetes集群时,每个命名空间的资源使用量不会超过其配额限制。
默认值处理惩罚

当容器未显式指定request和limit属性时,LimitRange可以提供默认的requests和limits值给容器,这是变异型准入控制器的功能。ResourceQuota不提供这样的默认功能,而是要求显式地在创建资源时指定这些属性。
LimitRange

LimitRange用于限制命名空间中Pod和容器的资源使用范围。它可以设定最小和最大的CPU、内存等资源限制,并可以提供默认值和默认哀求值。LimitRange重要关注资源的公平性和防止单个Pod或容器消耗过多资源。
LimitRange YAML示例:
apiVersion: v1
kind: LimitRange
metadata:
name: example-limitrange
spec:
limits:
- default:
      cpu: 500m
      memory: 512Mi
    defaultRequest:
      cpu: 200m
      memory: 256Mi
    type: Container在这个示例中,LimitRange设置了容器的默认CPU和内存限制(default)以及默认哀求(defaultRequest)。
ResourceQuota

ResourceQuota用于限制命名空间的资源总量,包括Pod数量、各种资源对象的总数以及Pod可以使用的计算资源总量。它重要用于多租户环境,以确保每个租户的资源使用都在其配额范围内。
ResourceQuota YAML示例:
apiVersion: v1
kind: ResourceQuota
metadata:
name: example-resourcequota
spec:
hard:
    pods: "10"
    requests.cpu: "1"
    requests.memory: "2Gi"
    limits.cpu: "2"
    limits.memory: "4Gi"在这个示例中,ResourceQuota限制了命名空间中可以创建的Pod数量为10个,以及Pod可以哀求的CPU和内存总量,另有可以设置的CPU和内存限制总量。
对比


[*]作用范围:LimitRange作用于Pod和容器级别,而ResourceQuota作用于命名空间级别。
[*]关注点:LimitRange关注资源的最小、最大限制和公平性,ResourceQuota关注资源的总量和分配。
[*]默认值:LimitRange可以提供默认的资源哀求和限制值,ResourceQuota不提供默认值,而是要求显式设置。
它们通常一起使用,以实现对Kubernetes集群中资源的全面管理和控制。通过公道设置LimitRange和ResourceQuota,可以确保资源的公道分配和使用,防止资源的浪费和争用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: k8s资源限制之LimitRange和ResourceQuota