ResourceQuota用于限制命名空间资源使用,防止资源滥用。它通过设置CPU、内存、存储及对象数量上限,确保集群稳定性和多租户管理能力,需配合LimitRange并定期监控使用情况。

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 不复杂但容易忽略,合理设置能有效防止资源滥用,提升集群利用率和稳定性。










