问题描述
如何限制一个命名空间下可以创建的pod数量。
问题分析
Kubernetes提供了资源对象ResourceQuota,可以实现对命名空间下创建pod的数量限制。
问题解决
1.创建ResourceQuota
$ kubectl create ns quota-pod-test
$ cat ResourceQuota-test.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: quota-demo
namespace: quota-pod-test
spec:
hard:
pods: "3"
$ kubectl apply -f ResourceQuota-test.yaml
2.查看ResourceQuota
$ kubectl get resourcequota -n quota-pod-test
NAME AGE REQUEST LIMIT
quota-demo 2s pods: 0/3
3.创建pod测试
# 在quota-pod-test命令空间创建4个pod进行测试,验证能否创建成功。
$ cat quota-pod-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pod-quota-demo
namespace: quota-pod-test
spec:
selector:
matchLabels:
purpose: quota-demo
replicas: 4
template:
metadata:
labels:
purpose: quota-demo
spec:
containers:
- name: pod-quota-demo
image: nginx
$ kubectl apply -f quota-pod-deployment.yaml
#查看pod-quota-demo deployment信息
$ kubectl get deployment pod-quota-demo -n quota-pod-test -oyaml
...
message: 'pods "pod-quota-demo-55bc58fc69-4zfrn" is forbidden: exceeded quota:
quota-demo, requested: pods=1, used: pods=3, limited: pods=3'
...
# 从输出的信息可以看到,尽管尝试创建4个Pod,但是由于配额的限制,只有3个Pod能被成功创建
参考链接
https://kubernetes.io/zh/docs/tasks/administer-cluster/manage-resources/quota-pod-namespace/ 如果您有其他问题,欢迎您联系火山引擎技术支持服务