# 资源类型
当多个用户(团队)共享一个节点数量有限的集群时,如何在多个用户(团队)之间分配集群的资源就会变得非常重要。Resource quota 的用途便在于此。本文主要探索通过 ResourceQuota 限定名称空间的计算资源配额、存储资源配额、对象数量配额。
# 计算资源配额
通过 ResourceQuota
可以限定名称空间中可以使用的 计算资源 的总量。支持的计算资源定义类型如下:
资源名称 | 描述 |
---|---|
limits.cpu | 名称空间中,所有非终止状态(non-terminal)的 Pod 的 CPU限制 resources.limits.cpu 之和不能超过此值 |
limits.memory | 名称空间中,所有非终止状态(non-terminal)的 Pod 的内存限制 resources.limits.memory 之和不能超过此值 |
requests.cpu | 名称空间中,所有非终止状态(non-terminal)的 Pod 的 CPU请求 resources.requrest.cpu 之和不能超过此值 |
requests.memory | 名称空间中,所有非终止状态(non-terminal)的 Pod 的 CPU请求 resources.requests.memory 之和不能超过此值 |
具体案例请参考: CPU/内存资源限额
# 存储资源配额
通过 ResourceQuota
可以:
资源名称 | 描述 |
---|---|
requests.storage | 名称空间中,所有存储卷声明(PersistentVolumeClaim)请求的存储总量不能超过此值 |
persistentvolumeclaims | 名称空间中,可以创建的 存储卷声明(PersistentVolumeClaim)的总数不能超过此值 |
<storage-class-name>.storageclass .storage.k8s.io/requests.storage | 名称空间中,所有与指定存储类(StorageClass)关联的存储卷声明(PersistentVolumeClaim)请求的存储总量不能超过此值 |
<storage-class-name>.storageclass .storage.k8s.io/persistentvolumeclaims | 名称空间中,所有与指定存储类(StorageClass)关联的存储卷声明(PersistentVolumeClaim)的总数不能超过此值 |
例如,假设管理员想要对存储类 gold
和存储类 bronze
做不同的配额限定,那么,可以按如下方式定义 ResourceQuota
:
gold.storageclass.storage.k8s.io/requests.storage: 500Gi
bronze.storageclass.storage.k8s.io/requests.storage: 100Gi
在 Kubernetes v1.8 中,引入了本地短时存储(local ephemeral storage)的资源配额设置 Alpha
资源名称 | 描述 |
---|---|
requests.ephemeral-storage | 名称空间中,所有 Pod 的本地短时存储(local ephemeral storage)请求的总和不能超过此值 |
limits.ephemeral-storage | 名称空间中,所有 Pod 的本地短时存储(local ephemeral storage)限定的总和不能超过此值 |
# 对象数量配额
从 Kubernetes v1.9 开始,支持使用如下格式的限定名称空间中标准类型对象的总数量:
count/<resource>.<group>
下面是一些例子:
count/persistentvolumeclaims
count/services
count/secrets
count/configmaps
count/replicationcontrollers
count/deployments.apps
count/replicasets.apps
count/statefulsets.apps
count/jobs.batch
count/cronjobs.batch
count/deployments.extensions
Kubernetes v1.15 开始,支持使用相同的格式限定名称空间中自定义资源(CustomResource)对象的总量。例如,为 example.com
API group 中的自定义资源(CustomResource) widgets
限定对象数量总数的配额,可以使用 count/widgets.example.com
。
当使用 count/*
的方式限定对象总数的配额时,只要对象存储在 apiserver 中,无论其状态如何,该对象就被计数。 此类配额限定可以保护 apiserver 的存储空间不被过度消耗。例如,
免费答疑
微信群
微信扫码 进群发广告者死全家...
赞赏
微信扫码