kubernetes提供了两种资源限制的方式:ResourceQuota 和LimitRange。
其中ResourceQuota 是针对namespace做的资源限制,而LimitRange是针对namespace中的每个组件做的资源限制。
一、ResourceQuota是什么
当多个namespace共用同一个集群的时候可能会有某一个namespace使用的资源配额超过其公平配额,导致其他namespace的资源被占用。
这个时候我们可以为每个namespace创建一个ResourceQuota,
- 用户在namespace中创建资源时,quota 配额系统跟踪使用情况,以确保不超过ResourceQuota的限制值。
- 如果创建或更新资源违反配额约束,则HTTP状态代码将导致请求失败403 FORBIDDEN。
- 资源配额的更改不会影响到已经创建的pod。
- apiserver的启动参数通常kubernetes默认启用了ResourceQuota.在apiserver的启动参数–enable-admission-plugins=中如果有ResourceQuota便为启动。
二、使用ResourceQuota
1、首先创建一个namespace
> kubectl create ns gkn
namespace/gkn created
> kubectl get ns
NAME STATUS AGE
default Active 12d
dev Active 10d
gkn Active 13s
2、创建一个ResourceQuota
> cat <<EOF > gkn-resources.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: gkn-resources
namespace: gkn
spec:
hard:
pods: "4"
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
EOF
> kubectl apply -f gkn-resources.yaml
resourcequo