作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,Resource Quotas是什么?如何做资源管理的?

在Kubernetes (K8s) 中,Resource Quotas 是一种集群管理员用来限制Namespace内资源消耗总量的机制。这种机制允许管理员对特定Namespace定义资源使用上限,确保Namespace内的用户或团队不会过度消耗集群资源,进而影响其他Namespace或整个集群的稳定性。

Resource Quotas 具体是如何工作的:

  1. 资源类型

    • Resource Quotas 可以限制多种资源类型,包括但不限于计算资源(如 CPU 和内存)、存储资源(PersistentVolumeClaims)、以及其他各种对象计数(如 Pods、Services、ConfigMaps、Secrets 等)。
  2. Namespace 层级

    • Resource Quotas 是在 Namespace 级别定义和应用的,这意味着每个 Namespace 只能有一个 ResourceQuota 对象生效。通过这种方式,不同的团队可以在各自的 Namespace 内部自由部署应用,但不能超出设定的资源限制。
  3. 限制设置

    • 在创建 ResourceQuota 对象时,管理员会定义一系列的 limits,比如针对 CPU 和内存资源,可以设置 requests(请求值)和 limits(限制值)的最大总量。当 Namespace 内的资源总量超过这些限制时,集群将不允许创建新的资源对象或更新现有对象以增加资源需求。
  4. 资源验证

    • 当用户尝试创建或更新资源对象时,Kubernetes 集群的准入控制会检查这些操作是否会导致 Namespace 超出其 ResourceQuota 限制。如果操作会导致资源超标,则会拒绝该请求。
  5. 实时监控与调整

    • Resource Quotas 不仅用于防止资源超限,还能帮助集群管理员实时监控 Namespace 内的资源使用情况,并可根据实际情况调整 ResourceQuota 限制,以优化资源分配和利用率。

实践操作

创建 ResourceQuota 对象的 YAML 示例:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-quota
spec:
  hard:
    requests.cpu: "2"
    requests.memory: "4Gi"
    limits.cpu: "4"
    limits.memory: "8Gi"
    pods: "10"

在这个例子中,为名为 example-quota 的 Namespace 设置了如下限制:

  • 最多可以请求2核CPU和4GB内存资源
  • 最大的资源限制(包括突发情况下)为4核CPU和8GB内存
  • 最多可创建10个Pod

综上所述,通过这样的配置,Kubernetes 集群就能够有效地管理资源分配,防止资源滥用和资源耗尽的问题。

posted @ 2024-03-04 09:01  黄嘉波  阅读(110)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波