kubernetes--资源配额ResourceQuota(针对名称空间)

介绍

当多个用户或团队共享具有固定节点数目的集群时,人们会担心有人使用超过其基于公平原则所分配到的资源量。

资源配额是帮助管理员解决这一问题的工具。

资源配额,通过 ResourceQuota 对象来定义,对每个命名空间的资源消耗总量提供限制。 它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命名空间中的 Pod 可以使用的计算资源的总上限。

资源配额的工作方式如下:

  • 不同的团队可以在不同的命名空间下工作。这可以通过 RBAC强制执行。

  • 集群管理员可以为每个命名空间创建一个或多个 ResourceQuota 对象。

  • 当用户在命名空间下创建资源(如 Pod、Service 等)时,Kubernetes 的配额系统会跟踪集群的资源使用情况, 以确保使用的资源用量不超过 ResourceQuota 中定义的硬性资源限额。

  • 如果资源创建或者更新请求违反了配额约束,那么该请求会报错(HTTP 403 FORBIDDEN), 并在消息中给出有可能违反的约束。

  • 如果命名空间下的计算资源 (如 cpumemory)的配额被启用, 则用户必须为这些资源设定请求值(request)和约束值(limit),否则配额系统将拒绝 Pod 的创建。 提示: 可使用 LimitRanger 准入控制器来为没有设置计算资源需求的 Pod 设置默认值

说明:

  • 对于 cpumemory 资源:ResourceQuota 强制该命名空间中的每个(新)Pod 为该资源设置限制。 如果你在命名空间中为 cpumemory 制实施资源配额, 你或其他客户端必须为你提交的每个新 Pod 指定该资源的 requestslimits。 否则,控制平面可能会拒绝接纳该 Pod。

  • 对于其他资源:ResourceQuota 可以工作,并且会忽略命名空间中的 Pod,而无需为该资源设置限制或请求。 这意味着,如果资源配额限制了此命名空间的临时存储,则可以创建没有限制/请求临时存储的新 Pod。 你可以使用限制范围自动设置对这些资源的默认请求。

支持的资源

支持的资源

描述

limits.cpu/memory

所有Pod上限资源配置总量不超过该值(所有非终止状态的Pod)

requests.cpu/memory

所有Pod请求资源配置总量不超过该值(所有非终止状态的Pod)

cpu/memory

等同于requests.cpu/requests.memory

requests.storage

所有PVC请求容量总和不超过该值

persistentvolumeclaims

所有PVC数量总和不超过该值

<storage-class-name>.

storageclass.storage.k8s.io/requests.storage

所有与<storage-class-name>相关的PVC请求容量总和不超过该值

<storage-class-name>. storageclass.storage.k8s.io/persistentvolumeclaims

所有与<storage-class-name>相关的PVC数量总和不超过该值

pods、count/deployments.apps、 count/statfulsets.apps、count/services (services.loadbalancers、services.nodeports)、 count/secrets、count/configmaps、 count/job.batch、count/cronjobs.batch

创建资源数量不超过该值

yaml示列:

#计算资源配额(创建pod时pod所需资源)
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: test
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
    requests.nvidia.com/gpu: 4 #GPU
---
#存储资源配额
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: test
spec:
  hard:
    requests.storage: "10G"
    managed-nfs-storage.storageclass.storage.k8s.io/requests.storage: "5G"

---
#对象数量配额
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: test
spec:
  hard:
    pods: "10"
    count/deployments.apps: "3"
    count/services: "3"

查看ns配额

【】kubectl get quota -n test

官方参考网址:https://kubernetes.io/zh-cn/docs/concepts/policy/resource-quotas/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值