kubernetes資源對象--ResourceQuotas


概念

Resource Quotas(資源配額,簡稱quota)是對namespace進行資源配額,限制資源使用的一種策略。 K8S是一個多用戶架構,當多用戶或者團隊共享一個K8S系統時,SA使用quota防止用戶(基於namespace的)的資源搶占,定義好資源分配策略。

Quota應用在Namespace上,默認情況下,沒有Resource Quota的,需要另外創建Quota,並且每個Namespace最多只能有一個Quota對象。

限額資源類型

計算資源:limits.cpu、requests.cpu、limits.memory、requests.memory
存儲資源,包括存儲資源的總量以及指定storage class的總量
    requests.storage:存儲資源總量,如500Gi
    persistentvolumeclaims:pvc的個數
    .storageclass.storage.k8s.io/requests.storage
    .storageclass.storage.k8s.io/persistentvolumeclaims
對象數,即可創建的對象的個數
    pods,replicationcontrollers,configmaps,secrets,persistentvolumeclaims,services,services.loadbalancers,services.nodeports

使用注意實現

在使用前需確認apiserver的配置文件中的KUBE_ADMISSION_CONTROL是否有ResourceQuota,如果沒有需要添加並重啟apiserver。
Quota依賴於資源管理器,可以使用資源對象limits或者在創建資源對象是為pod設置資源限制(resources),如果不設置,資源對象無法創建。
當該namespace中的任意個額度達到預設Quota時,將無法創建資源對象。

例子

比如K8S系統共有20核CPU和32GB內存,分配給lykops用戶戶5核CPU和16GB,分配給B租戶5核CPU 和8GB,預留10核CPU和8GB內存。這樣,用戶中所使用的CPU和內存的總和不能超過指定的資源配額,促使其更合理地使用資源。

kubectl delete -f resourcequota.yaml
cat << EOF > resourcequota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  namespace: lykops
  name: lykops
  labels:
    project: lykops
    app: resourcequota
    version: v1
spec:
  hard:
    pods: 50
    requests.cpu: 0.5
    requests.memory: 512Mi
    limits.cpu: 5
    limits.memory: 16Gi
    configmaps: 20
    persistentvolumeclaims: 20
    replicationcontrollers: 20
    secrets: 20
    services: 50
EOF
kubectl create -f resourcequota.yaml


免責聲明!

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



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