配置命名空间的 Pod 配额
限制在一个命名空间内可以创建的 Pod 数量。
本页面展示如何为单个 命名空间中可以运行的 Pod 总数设置配额。你可以在 ResourceQuota 对象中指定配额。
准备工作
你需要有一个 Kubernetes 集群,并且 kubectl 命令行工具已配置为与你的集群通信。建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。如果你还没有集群,你可以使用 minikube 创建一个,或者使用以下 Kubernetes 演练场之一
你必须有权在集群中创建命名空间。
创建命名空间
创建一个命名空间,以便你在本练习中创建的资源与集群的其余部分隔离。
kubectl create namespace quota-pod-example
创建一个 ResourceQuota
以下是 ResourceQuota 的示例清单
apiVersion: v1
kind: ResourceQuota
metadata:
name: pod-demo
spec:
hard:
pods: "2"
创建 ResourceQuota
kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod.yaml --namespace=quota-pod-example
查看 ResourceQuota 的详细信息
kubectl get resourcequota pod-demo --namespace=quota-pod-example --output=yaml
输出显示该命名空间有两个 Pod 的配额,并且当前没有 Pod;也就是说,没有使用配额。
spec:
hard:
pods: "2"
status:
hard:
pods: "2"
used:
pods: "0"
以下是 Deployment 的示例清单
apiVersion: apps/v1
kind: Deployment
metadata:
name: pod-quota-demo
spec:
selector:
matchLabels:
purpose: quota-demo
replicas: 3
template:
metadata:
labels:
purpose: quota-demo
spec:
containers:
- name: pod-quota-demo
image: nginx
在该清单中,`replicas: 3` 告诉 Kubernetes 尝试创建三个新的 Pod,所有这些 Pod 都运行相同的应用程序。
创建 Deployment
kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod-deployment.yaml --namespace=quota-pod-example
查看 Deployment 的详细信息
kubectl get deployment pod-quota-demo --namespace=quota-pod-example --output=yaml
输出显示,即使 Deployment 指定了三个副本,由于你之前定义的配额,也只创建了两个 Pod。
spec:
...
replicas: 3
...
status:
availableReplicas: 2
...
lastUpdateTime: 2021-04-02T20:57:05Z
message: 'unable to create pods: pods "pod-quota-demo-1650323038-" is forbidden:
exceeded quota: pod-demo, requested: pods=1, used: pods=2, limited: pods=2'
资源选择
在此任务中,你定义了一个 ResourceQuota,它限制了 Pod 的总数,但你也可以限制其他类型对象的总数。例如,你可以决定限制单个命名空间中可以存在的 CronJob 的数量。
清理
删除你的命名空间
kubectl delete namespace quota-pod-example
下一步
致集群管理员
致应用开发者
最后修改于 2024 年 10 月 30 日下午 5:17 PST:KEP 2837:Pod 级别资源 Alpha (0374213f57)