什么是 Kubernetes 的 ResourceQuota,如何限制资源?

来源:这里教程网 时间:2026-02-21 17:26:37 作者:

Kubernetes 的 ResourceQuota 是一种用于限制命名空间(Namespace)中资源使用总量的机制。它可以帮助集群管理员控制每个命名空间能使用的计算资源(如 CPU、内存)、存储以及对象数量(如 Pod、Service、PersistentVolumeClaim 等),防止资源被某个项目或团队过度占用,提升集群的稳定性和多租户管理能力。

ResourceQuota 的作用

ResourceQuota 通过在特定命名空间中创建一个

ResourceQuota
对象,来定义该命名空间内所有资源使用的硬性上限。一旦设置了配额,用户在该命名空间中创建资源时,必须遵守这些限制,否则创建请求会被拒绝。

常见可限制的资源包括:

计算资源:cpu、memory、ephemeral-storage 存储资源:requests.storage、persistentvolumeclaims 对象数量:pods、services、replicationcontrollers、deployments、secrets、configmaps 等

如何配置 ResourceQuota

以下是一个典型的 ResourceQuota 配置示例:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: quota-example
  namespace: my-namespace
spec:
  hard:
    pods: "10"
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "6"
    limits.memory: 12Gi
    persistentvolumeclaims: "5"
    requests.storage: 100Gi
    services.loadbalancers: "2"

这个配置表示在

my-namespace
命名空间中:

最多允许运行 10 个 Pod CPU 请求总量不超过 4 核,限制总量不超过 6 核 内存请求不超过 8GB,限制不超过 12GB 最多创建 5 个 PVC,总存储请求不超过 100GB 最多创建 2 个 LoadBalancer 类型的服务

实际使用建议

要让 ResourceQuota 生效,需确保:

目标命名空间已存在,或提前创建好 为命名空间设置配额前,检查当前资源使用情况,避免立即超限导致无法创建新对象 配合 LimitRange 使用,可以为单个容器设置默认资源请求和限制,便于统一管理 定期监控配额使用情况,可通过命令查看:
kubectl -n my-namespace describe resourcequota quota-example

基本上就这些。ResourceQuota 不复杂但容易忽略,合理设置能有效防止资源滥用,提升集群利用率和稳定性。

相关推荐