概念
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,分配給lykchat租戶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
本文轉自開源中國-kubernetes資源對象--ResourceQuotas