设置资源配额
更新时间:2023-04-20
命名空间的资源配额(ResourceQuota),用于多团队或多用户的共享集群资源场景下,限制团队、用户可以使用的资源总量,包括限制命名空间下创建某一类型对象(容器、服务)的数量以及消耗计算资源(CPU、内存)的总量,更多信息请见ResourceQuota。
前提条件
操作步骤
- 登录百度智能云管理控制台,进入产品服务>云原生>容器引擎 CCE,单击集群管理>集群列表,单击目标集群名称,进入"集群详情"页,在侧边栏单击命名空间。
-
在命名空间列表中单击目标命名空间的更多>设置资源配额操作。
-
配置该命名空间的计算资源限制、存储资源限制以及其他资源限制。
限制名称 限制说明 CPU Request(请求) 该命名空间下所有非终止状态的Pod的CPU请求总和的上限 CPU Limit(限制) 该命名空间下所有非终止状态的Pod的CPU总和的上限 内存 Request(请求) 该命名空间下所有非终止状态的Pod的内存请求总和的上限 内存 Limit(限制) 该命名空间下所有非终止状态的Pod的内存总和的上限 存储总量 该命名空间下所有PVC的存储资源需求总量的上限 PVC总量 该命名空间所允许的PVC总数的上限 本地临时存储Request(请求) 该命名空间下所有Pod的本地临时存储请求总和的上限 本地临时存储Limit(请求) 该命名空间下所有Pod的本地临时存储总和的上限 容器组总量 该命名空间下所有非终止状态的Pod的总数的上限 Service总量 该命名空间下所有Service的总数的上限 LoadBalance Service总量 该命名空间下所有LoadBalance类型Service的总数的上限 Service使用NodePort总量 该命名空间下所有Service使用NodePort总数的上限 Deployment总量 该命名空间下所有Deployment的总数的上限 StatefulSet总量 该命名空间下所有StatefulSet的总数的上限 Job总量 该命名空间下所有Job的总数的上限 CronJob总量 该命名空间下所有CronJob的总数的上限 Secret总量 该命名空间下所有Secret的总数的上限 ConfigMap总量 该命名空间下所有ConfigMap的总数的上限 说明:
- 不填表示对该资源无限制
- Service使用NodePort总量限制的是该命名空间下NodePort资源的数量,不是NodePort类型Service的数量
- 单击确定,完成设置命名空间资源配额。
示例
限制 Namespace Pod 个数
本示例演示使用 ResourceQuota 限制命名空间中 PersistentVolumeClaim 的创建数量。
1、创建示例命名空间
kubectl create namespace quota-example
2、创建 ResourceQuota
将以下 yaml 保存为 quota-demo.yaml,并创建 ResourceQuota kubectl create -f quota-demo.yaml
:
apiVersion: v1
kind: ResourceQuota
metadata:
name: default-resource-quota
namespace: quota-example
spec:
hard:
pods: "4" ## 最多 4 个 Pod
configmaps: "10" ## 最多 10 个 ConfigMap
secrets: "10" ## 最多 10 个 secret
services: "10" ## 最多 10 个 service
services.loadbalancers: "2" ## 最多 2 个 Loadbanlacer 模式的 service
cpu: "1000" ## 该 Namespaces 下最多使用 1000 个 CPU 的资源
memory: 200Gi ## 该 Namespaces 下最多使用 200Gi 的内存
3、验证 ResourceQuota
使用以下 YAML 创建 5 个 Pod,但最终只会创建 4 个 Pod 出来:
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-example
namespace: quota-example
labels:
app: nginx
spec:
replicas: 5
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
restartPolicy: Always
containers:
- name: nginx
image: hub.baidubce.com/cce/nginx-alpine-go:latest
imagePullPolicy: Always
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
最多只会创建 4 个 Pod:
$kubectl get deployment -n quota-example
NAME READY UP-TO-DATE AVAILABLE AGE
deployment-example 4/5 4 4 59s