Kubernetes笔记之ResourceQuota
Contents
当用多个团队和用户共用同一集群的时候那难免会有资源竞争的情况发生,这时候就需要对不同团队或用户的资源使用配额做出限制
资源类型
资源配额分为三种类型:
- 计算资源配额
- 存储资源配额
- 对象数量配额
详细信息请参考kubernetes官方文档资源配额
计算资源配置
可以在一个给定的命名空间限制可以请求的计算资源的总量
资源名称 | 描述 |
---|---|
cpu | 非终止态的所有pod,cpu请求值总量不能超出此值 |
limits.cpu | 非终止态的所有pod,cpu限制总量不能超出此值 |
limits.memory | 非终止态的所有pod,内存限制总量不能超出此值 |
memory | 非终止态的所有pod,内存请求总量不能超出此值 |
requests.cpu | 非终止态的所有pod,cpu请求总量不能超出此值 |
requests.memory | 非终止态的所有pod,内存请求总量不能超出此值 |
- 示例yaml文件
|
|
存储资源的配额
可以在一个给定的命名空间中限制可以请求的存储资源的总量
资源名称 | 描述 |
---|---|
requests.storage | 所有PVC,存储请求总量不能超出此值 |
persistentvolumeclaims | 命名空间中可以存在的PVC总数 |
.storageclass.storage.k8s.io/requests.storage | 和该存储嘞关联的所有PVC,存储请求总和不能超出此值 |
.storageclass.storage.k8s.io/persistentvolumeclaims | 和该存储类关联的所有PVC,命名空间中可以存在的PVC总数 |
示例
- gold.storageclass.storage.k8s.io/requests.storage: 500Gi
- bronze.storageclass.storage.k8s.io/requests.storage: 100Gi
对象数量的配额
一个给定类型的对象的数量可以限制。
资源名称 | 描述 |
---|---|
congfigmaps | 命名空间可以存在的配置映射的总数 |
persistentvolumeclaims | 命名空间中可以存在的PVC总数 |
pods | 命名空间中可以存在的非终止态的pod总数。如果一个pod的status.phase是failed,Succeeded,则该pod处于终止态 |
replicationcontrollers | 命名空间中可以存在的rc总数 |
resourcequotas | 命名空间中可以存在的资源配额总数 |
services | 命名空间中可以存在的服务总量 |
services.loadbalancers | 命名空间中可以存在的服务的负载均衡的总数量 |
servces.nodeports | 命名空间中可以存在的服务的主机接口的总数量 |
secrets | 命名空间中可以存在的secrets的总数量 |
- 示例yaml文件
|
|
限额的作用域
每个配额可以有一组关联的作用域。如果一个限额匹配枚举的作用的交集,它将只衡量一个资源的利用率。当一个作用域被添加到配额时,它将会限制它支持的涉及到该作用域的资源的数量。在不允许的限额上指定资源将会导致一个验证做错误
作用域 | 描述 |
---|---|
Terminating | 匹配spec.activeDeadLineSeconds >= 0 的pod |
NotTerminating | 匹配spec.activeDeadLineSeconds is nil 的pod |
BestEffort | 匹配具有最佳服务质量的pod |
NotBestEffort | 匹配具有非最佳服务质量的pod |
BestEffort作用域禁止限制跟踪以下的资源:
- pods
Terminating、NotTerminating和NotBestEffort作用域禁止限额跟踪以下的资源:
- cpu
- limits.cpu
- limits.memory
- memory
- pods
- requests.cpu
- requests.memory
注意:当命名空间开启了ResourceQuota但没有设置LimitRange时,用户创建pod,必须指定cup,内存的requests和limits,否则会创建失败。resourceQuota搭配 limitRanges效果更好
deployment示例
|
|
设置资源限制需要在spec.template.spec下添加resources内容
request
- 容器使用的最小资源需求, 作为容器调度时资源分配的判断依赖。
- 只有当前节点上可分配的资源量 >= request 时才允许将容器调度到该节点。
- request参数不限制容器的最大可使用资源
limit
- 容器能使用资源的最大值
- 设置为0表示对使用的资源不做限制, 可无限的使用
Author dylan
LastMod 2020-04-18
License 如需转载请注明文章作者和出处。谢谢!