Kubernetes 实战:为 Namespace 配置 Pod 配额(ResourceQuota)
·
Kubernetes 实战:为 Namespace 配置 Pod 配额(ResourceQuota)
在多人协作或微服务密集的 Kubernetes 集群中,如果不加限制,某个 Namespace 可能会创建出成百上千个 Pod,导致资源争抢、节点压力过大甚至集群不稳定。
Kubernetes 提供了 ResourceQuota 对象,可以为每个 Namespace 设置资源配额。今天我们就通过一个完整示例,学习如何限制某个 Namespace 中的 Pod 总数。
🎯 目标
限制 quota-pod-example 命名空间中的 Pod 数量 最多为 2 个。
📋 操作步骤
1. 准备工作
- 已安装 Kubernetes 集群(推荐 Minikube 或云上集群)
- 已安装
kubectl并配置好集群访问权限
2. 创建独立 Namespace
为了隔离资源,先创建一个单独的命名空间:
kubectl create namespace quota-pod-example
3. 创建 ResourceQuota(Pod 配额)
编写 quota-pod.yaml 文件:
yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: pod-demo
spec:
hard:
pods: "2" # 限制 Pod 总数为 2
应用配置:
bash
kubectl create -f quota-pod.yaml --namespace=quota-pod-example
4. 查看配额状态
bash
kubectl get resourcequota pod-demo --namespace=quota-pod-example -o yaml
输出关键部分:
yaml
spec:
hard:
pods: "2"
status:
hard:
pods: "2"
used:
pods: "0"
可以看到配额上限为 2,当前已使用 0。
5. 测试配额效果:尝试创建 3 个 Pod
创建一个 Deployment,要求 3 个副本(replicas: 3):
quota-pod-deployment.yaml 内容:
yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: pod-quota-demo
spec:
replicas: 3
template:
metadata:
labels:
purpose: quota-demo
spec:
containers:
- name: pod-quota-demo
image: nginx
创建 Deployment:
bash
kubectl create -f quota-pod-deployment.yaml --namespace=quota-pod-example
6. 观察结果:只有 2 个 Pod 启动成功
bash
kubectl get deployment pod-quota-demo --namespace=quota-pod-example -o yaml
关键输出:
yaml
spec:
replicas: 3
status:
availableReplicas: 2 # 实际只启动了 2 个
conditions:
- message: 'unable to create pods: exceeded quota: pod-demo, requested: pods=1, used: pods=2, limited: pods=2'
说明:Kubernetes 会因为配额限制拒绝创建第 3 个 Pod,并在 Deployment 的状态中明确提示“超出配额”。
🧹 清理环境
实验结束后,删除所有资源:
bash
kubectl delete deployment pod-quota-demo --namespace=quota-pod-example
kubectl delete resourcequota pod-demo --namespace=quota-pod-example
kubectl delete namespace quota-pod-example
💡 核心总结
关键点 说明
资源对象 ResourceQuota
限制字段 spec.hard.pods
作用范围 单个 Namespace
超出配额行为 创建新 Pod 会被拒绝,Deployment/StatefulSet 等控制器会保持在未满状态
典型场景 多租户隔离、避免某个业务过度消耗 Pod 资源
🚀 进阶建议
对于集群管理员:除了 Pod 数量,还可以限制 CPU/内存/存储/PVC 数量等
对于应用开发者:在部署前应先查看 Namespace 配额,避免应用因无法创建 Pod 而 hang 住
查看配额命令:
bash
kubectl get resourcequota -n <namespace>
更多推荐
所有评论(0)