簡介
限制namespace中運行的Pod個數,設置Pod配額(Quota)。
備注:此文檔參考官方文檔,並加以自己的理解。如有誤導性的內容,請批評指正。
namepace的Pod配置示例
創建namespace
# kubectl create namespace quota-pod-example
創建一個ResourceQuota
對象。文件名:quota-pod.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: pod-demo
spec:
hard:
pods: "2"
# kubectl apply -f /root/k8s-example/namespace/quota-pod.yaml --namespace=quota-pod-example
查看輸出結果
# kubectl get resourcequota pod-demo --namespace=quota-pod-example --output=yaml
從結果中可以看到,Pod配額為2個
,使用了0個
spec:
hard:
pods: "2"
status:
hard:
pods: "2"
used:
pods: "0"
創建一個Deployment
資源,啟動一個3副本的Pod
。文件名:quota-pod-deployment.yaml
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
# kubectl apply -f /root/k8s-example/namespace/quota-pod-deployment.yaml --namespace=quota-pod-example
查看Deployment
資源詳情
# kubectl get deployment pod-quota-demo --namespace=quota-pod-example --output=yaml
從輸出結果可以看出,已創建2個Pod,但是由於該namespace的Pod配額是2個,所以第3個無法被創建
spec:
...
replicas: 3
...
status:
availableReplicas: 2
...
lastUpdateTime: 2017-07-07T20: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'
查看正在運行的Pod
# kubectl get po -n quota-pod-example
NAME READY STATUS RESTARTS AGE
pod-quota-demo-56d6f96f68-8c9px 1/1 Running 0 6m43s
pod-quota-demo-56d6f96f68-zq6v6 1/1 Running 0 6m43s
實驗完畢,刪除Pod
# kubectl delete namespace quota-pod-example
總結
1、為了充分利用資源,可以給namespace定義Pod配置,當超過該Pod配額值時,Pod不會被創建。