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,分配給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