Kubernetes的资源限制一般是以Namespace为单位进行限制
为Namespace限额的方式有两种:ResourceQuota和LimitRange
ResourceQuota 用来限制 namespace 中所有的 Pod 占用的总的资源 request 和 limit
LimitRange 用来限制 namespace 中 单个Pod 默认资源 request 和 limit
下面看具体案例
1,首先创建namespace
1)LimitRange限制方式:
相应的yaml文件
apiVersion: v1
kind: LimitRange
metadata:
? name: cpu-limit-range
? namespace: myns
spec:
? limits:
? - default:? ? ? ? ? ? #默认上限
? ? ? cpu: 1000m
? ? defaultRequest:
? ? ? cpu: 1000m
? ? min:
? ? ? cpu: 500m
? ? max:
? ? ? cpu: 2000m
? ? maxLimitRequestRatio:? ? ? #定义最大值是最小值的几倍,当前为4倍
? ? ? cpu: 4
? ? type: Container
用kubectl apply -f? 进行创建
用kubectl get Limit Range cpu-limit-range -n myns进行查看
2)ResourceQuota限制方式
相应的yaml文件
apiVersion: v1
kind: ResourceQuota
metadata:
? name: quota-example
? namespace: myns
spec:
? hard:
? ? pods: "5"
? ? requests.cpu: "1"
? ? requests.memory: 1Gi
? ? limits.cpu: "2"
? ? limits.memory: 2Gi
? ? count/deployments.apps: "2"
? ? count/deployments.extensions: "2"
? ? persistentvolumeclaims: "2"
应用后可以用下面语句进行查看
kubectl get ResourceQuota -n myns
kubectl describe? ResourceQuotae -n myns