# 官方提供@yunTaoScripts 资源限制Quota 🔥🔥
# 针对单个容器的资源限制
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: cts
name: cts
spec:
containers:
- command:
- sleep
- "1000000"
image: centos:centos7.9.2009
name: cts
resources:
requests:
memory: "256Mi" ###预留最少
cpu: "500m"
limits:
memory: "512Mi" ###实际可以用到最多
cpu: "1000m"
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
cpu大小的说明
在kubernetets系统上,1个单位的CPU相当于虚拟机上的一颗虚拟CPU (vCPU)或者物理机上的一个超线程(HyperThread,或者称一个逻辑 CPU),它支持分数计量方式,一个核心(1 core)相当于1000个微核心 (millicores),因此500m相当于是0.5个核心,即二分之一个核心。
# 创建limtRange、
- 对命名空间所有pod进行统一限制。
apiVersion: v1
kind: LimitRange
metadata:
name: mem-min-max-demo-lr
namespace: 13-account
spec:
limits:
- max:
memory: 1Gi
min:
memory: 512Mi
type: Container ###针对容器 或者 Pod
DANGER
- 如果容器内没有声明最大值最小值,则使用
LimitRange
这里设置的。 - 如果容器里声明的
limits
和requests
大于或者小于limitrange
里的max
或者min
,都会导致pod创建不成功。 - 容器申请的资源不能超过
limit
# 创建resourceQuota
apiVersion: v1
kind: ResourceQuota
metadata:
name: yuntao-quota
spec:
hard:
pods: "4"
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
requests.nvidia.com/gpu: 4
configmaps: "10"
persistentvolumeclaims: "4"
replicationcontrollers: "20"
secrets: "10"
services: "10"
services.loadbalancers: "2"
- 已创建了4个pod,quota限制继续创建
kubectl run web4 --image=nginx
Error from server (Forbidden): pods "web4" is forbidden: exceeded quota: yuntao-quota, requested: pods=1, used: pods=4, limited: pods=4
limitrange和resourcequtoa的区别
limitrange
用来限制每个pod的资源 。resourcequtoa
用来限制项目里可以使用多少资源。
← 快速链接