k8s-pod的资源限制
1. Qos类别
说明:k8s会按优先级分配资源
-
Guranteed(保证)
1)优先级:最高
2)条件:
(每个容器)同时设置了CPU和内存的requests和limits
且cpu.limits=cpu.requests,memory.limits=memory。 -
Burstable(稳定)
1)优先级:其次
2)条件:至少有一个容器设置了CPU或内存资源的requests属性 -
BestEffort(尽力)
1)优先级:最低
当资源不够使用时,BestEffort状态的容器会被优先终止(根据优先级终止)
2)条件:没有任何一个容器设置了requests或limits属性
2. 资源分配原则
2.1 资源分配
按Qos优先级分配
2.2 结束进程
说明:资源不足的情况下会按如下规则结束进程
1)按Qos级别
2)同级别中
A = 实际占用量 / requests值,优先终止A大的pod
例如:
Pod-01,设置requests=512M的内存,实际使用500M
Pod-02,设置requests=1G,实际使用600M
则:会优先终止使用500M容器的pod)
3 资源限制
3.1 cpu/mem资源限制
说明:yml文件如下
- request是最低保障
- limits 是限制
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: my-pod
spec:
containers:
- name: my-pod
image: nginx
ports:
- name: http
containerPort: 80
resources:
requests: #最低保障
cpu: "250m"
memory: "64Mi"
limits: #最高限制
memory: "128Mi"
cpu: "500m"
3.2 ephemeral-storage限制
说明:限制容器存储空间的使用,该存储是
resources:
requests:
cpu: 1
memory: 2048Mi
ephemeral-storage: 2Gi
limits:
cpu: 2
memory: 2048Mi
ephemeral-storage: 5Gi