环境:kubernetes v1.18.16
k8s 资源单位介绍
CPU:1 core = 1000 milli core(毫核)
;50m相当于0.05core,最小单位1m;
内存:M 1000进制 129M字节;Mi 1024进制
pod资源限额设置:
spec:
containers:
- name: [容器名称]
image: [容器镜像]
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 10m
memory: 10Mi
limits:
cpu: '1'
memory: 1000Mi
requests
:最低配额,保证被调度的节点上至少有的资源配额
limits
: 资源限制,容器可以分配到的最大资源配额
pod qosClass介绍
qosClass 表示服务质量类型(Quality of Service)。其值由pod请求的内存和cpu确定的,有三种类型:Guaranteed,Burstable 和 BestEffort
。当node资源不足而驱逐pod时优先级不同:BestEffort→Burstable→Guaranteed
。最先驱逐BestEffort
,然后Burstable
,最后Guaranteed
。pod没有配置资源限制的时默认为BestEffort
。
kubectl get pod [pod名称] -o yml podqosClass类型
输出中
qosClass
字段显示当前
QoS Classes分类
Guranteed
:pod中所有Container的所有Resource的limit和request都相等且不为0,则这个Pod的QoS Class就是Guaranteed。注意,如果一个容器只指明了limit,而未指明request,则表明request的值等于limit的值。
Burstable
:pod中至少有一个容器设置CPU或内存资源的requests属性。
BestEffort
:Pod中没有任何一个容器设置了requests或limits属性。
node资源紧缺时pod驱逐机制
Guaranteed > Burstable > BestEffort
参考:http://t.zoukankan.com/peitianwang-p-11588003.html