Pod限额
ResourceQuota
对象是限制某个namespace下所有Pod(容器)
的资源限额LimitRange
对象是限制某个namespace单个Pod(容器
)的资源限额
LimitRange
对象用来定义某个命名空间
下某种资源对象
的使用限额,其中资源对象包括:Pod
、Container
、PersistentVolumeClaim
。如果在一个拥有默认内存或CPU限额的命名空间中创建一个容器,并且这个容器未指定它自己的内存或CPU的
limit
, 它会被分配这个默认的内存或CPU的limit
。既没有设置pod的limit
和request
才会分配默认的内存或CPU的request
。# 创建namespace
$ kubectl create namespace default-mem-example
# 创建LimitRange
$ cat memory-defaults.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container
$ kubectl create -f https://k8s.io/docs/tasks/administer-cluster/memory-defaults.yaml --namespace=default-mem-example
# 创建Pod,未指定内存的limit和request
$ cat memory-defaults-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: default-mem-demo
spec:
containers:
- name: default-mem-demo-ctr
image: nginx
$ kubectl create -f https://k8s.io/docs/tasks/administer-cluster/memory-defaults-pod.yaml --namespace=default-mem-example
# 查看Pod
$ kubectl get pod default-mem-demo --output=yaml --namespace=default-mem-example
containers:
- image: nginx
imagePullPolicy: Always
name: default-mem-demo-ctr
resources:
limits:
memory: 512Mi
requests:
memory: 256Mi
# 创建namespace
$ kubectl create namespace default-cpu-example