概念
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
评论