kubernetes之配置namespace中Pod的總數


簡介

限制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不會被創建。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM