资源配额
最后更新于
最后更新于
www.huweihuang.com
本文个人博客地址:http://www.huweihuang.com/article/kubernetes/kubernetes-resource/
ResourceQuota
对象用来定义某个命名空间下所有资源的使用限额,其实包括:
计算资源的配额
存储资源的配额
对象数量的配额
如果集群的总容量小于命名空间的配额总额,可能会产生资源竞争。这时会按照先到先得来处理。 资源竞争和配额的更新都不会影响已经创建好的资源。
Kubernetes 的众多发行版本默认开启了资源配额的支持。当在apiserver的--admission-control
配置中添加ResourceQuota
参数后,便启用了。 当一个命名空间中含有ResourceQuota
对象时,资源配额将强制执行。
可以在给定的命名空间中限制可以请求的计算资源(compute resources)的总量。
资源名称 | 描述 |
---|---|
可以在给定的命名空间中限制可以请求的存储资源(storage resources)的总量。
例如:可以定义pod的限额来避免某用户消耗过多的Pod IPs。
当分配计算资源时,每个容器可以为cpu或者内存指定一个请求值和一个限度值。可以配置限额值来限制它们中的任何一个值。 如果指定了requests.cpu
或者 requests.memory
的限额值,那么就要求传入的每一个容器显式的指定这些资源的请求。如果指定了limits.cpu
或者limits.memory
,那么就要求传入的每一个容器显式的指定这些资源的限度。
资源配额对象与集群容量无关,它们以绝对单位表示。即增加节点的资源并不会增加已经配置的namespace的资源。
参考文章:
https://kubernetes.io/docs/concepts/policy/resource-quotas/
资源名称 | 描述 |
---|---|
资源名称 | 描述 |
---|---|
作用域 | 描述 |
---|---|
cpu
非终止态的所有pod, cpu请求总量不能超出此值。
limits.cpu
非终止态的所有pod, cpu限制总量不能超出此值。
limits.memory
非终止态的所有pod, 内存限制总量不能超出此值。
memory
非终止态的所有pod, 内存请求总量不能超出此值。
requests.cpu
非终止态的所有pod, cpu请求总量不能超出此值。
requests.memory
非终止态的所有pod, 内存请求总量不能超出此值。
requests.storage
所有PVC, 存储请求总量不能超出此值。
persistentvolumeclaims
命名空间中可以存在的PVC(persistent volume claims)总数。
.storageclass.storage.k8s.io/requests.storage
和该存储类关联的所有PVC, 存储请求总和不能超出此值。
.storageclass.storage.k8s.io/persistentvolumeclaims
和该存储类关联的所有PVC,命名空间中可以存在的PVC(persistent volume claims)总数。
congfigmaps
命名空间中可以存在的配置映射的总数。
persistentvolumeclaims
命名空间中可以存在的PVC总数。
pods
命名空间中可以存在的非终止态的pod总数。如果一个pod的status.phase
是 Failed, Succeeded
, 则该pod处于终止态。
replicationcontrollers
命名空间中可以存在的rc
总数。
resourcequotas
命名空间中可以存在的资源配额(resource quotas)总数。
services
命名空间中可以存在的服务总数量。
services.loadbalancers
命名空间中可以存在的服务的负载均衡的总数量。
services.nodeports
命名空间中可以存在的服务的主机接口的总数量。
secrets
命名空间中可以存在的secrets
的总数量。
Terminating
匹配 spec.activeDeadlineSeconds >= 0
的pod
NotTerminating
匹配 spec.activeDeadlineSeconds is nil
的pod
BestEffort
匹配具有最佳服务质量的pod
NotBestEffort
匹配具有非最佳服务质量的pod