pod的资源管理
资源配额与限额
spec:
containers:
- name:
image:
resources:
requests:
cpu: <number>m
memory: <number>Mi
limits:
cpu: <number>m
memory: <number>Mi
配额是给多少,用不完,别人也不能用,就是预留给这个pod的,
配额相当于至少给多少资源,使用超过这个额度,也可以,
只要不超过节点的可用资源就可以。
限额是最多用多少
一般用设置内存和cpu
cpu用毫核(m)为单位表示
cpu一个核心是1000m
cpu占用的量化数据就是,
一秒钟占用多少毫核(m)的cpu资源
比如,一台机器有2个cpu
每个cpu有1个核心
那么这个机器的cpu总量就是2000毫核(m)
调度器是希望创建pod的时候指定配额和限额的
知道了这些数据,调度器就很容器确定把pod调度到哪个节点上
---
kind: Pod
apiVersion: v1
metadata:
name: app
spec:
containers:
- name: web
image: myos:httpd
resources:
requests:
cpu: 1500m
memory: 1200Mi
# pod创建成功之后describe可以看到资源配合信息
]# kubectl top pods app # 查看占用cpu和memory情况
配额策略会影响调度,
因为如果几个pod的配额把集群的资源已经分的差不多了,
虽然实际上没使用那么多,
但是新的pod会由于可分配资源不够,就会处于pending的状态,
没法调度。
有的pod所运行的服务非常重要,就可以给这个pod使用配额策略
保证这个pod一直有足够的资源可以使用。
所以,资源配额的主要作用是保护重要pod
配额是保底
限额是防止应用程序对资源的过度使用
限额使用limits进行配置
限额不能单独设置,必须与配合共同设置
配额要小于等于限额
如果没有设置配额
就默认把限额的值作为配额给加进去
配额理解为最小值
限额理解为最大值
resources:
requests:
cpu: 300m
memory: 1200Mi
limits:
cpu: 800m
memory: 1500Mi
服务质量管理QoS (Quality of Service)
优先保障哪些pod
Qos class | 含义 | 特征 | 配置方法 |
Guaranteed | 保障型 | 配额等于限额 | requests == limits |
Burstable | 爆发型 | 配额小于限额 | requests < limits |
BestEffort | 尽量型 | (默认类型) | requests和limits都不写 |
全局资源管理Quota
以名称空间为单位,进行资源配额与限额