增加预留系统开销
在CCI 2.0运行的pod,辅助pod容器运行的系统组件会占用少量底层资源,因此在某些场景下,pod会出现实际内存使用无法达到pod规格内存的情况。因此针对此类场景,提供2个开关用以预留系统组件开销。
pod的annotation "resource.cci.io/memory-reservation" :是否开启预留系统开销。默认为"false",开启为"true"。开启后,CCI 2.0会为pod实例的系统组件预留1Gi的内存,且如果超出当前pod规格,会自动向上规整到最近的规格。以规整后的规格进行计费。
pod的annotation "resource.cci.io/memory-burst-size" :是否扩大容器的内存资源隔离上限。默认为"false",开启为"true"。开启后,会调整pod的所有容器的limit.memory资源到最大(即pod规格的内存大小),以此扩大宿主环境的cgroup内存上限;可以让开启预留系统开销开关后,且因自动规格后升阶的pod,得以将被cgroup限制的内存释放出来,供给应用容器使用。
场景描述 |
Pod配置 |
实际申请资源量 |
规整后规格 |
在CCI运行Pod的最终规格 |
说明 |
---|---|---|---|---|---|
单容器,仅配置request,开启预留系统开销,开启扩大容器的内存资源隔离上限 |
annotations: "resource.cci.io/memory-reservation": "true" "resource.cci.io/memory-burst-size": "true" ... containers: - resources: requests: cpu: '1.5' memory: 2Gi |
1.5c3Gi |
2c4Gi |
containers: - resources: limits: memory: 4Gi requests: cpu: '1.5' memory: 2Gi |
计算流程如下: 1. 只有request,看request值计算资源申请量(1.5c2Gi) 2. 开启了预留系统开销,追加1Gi内存(1.5c3Gi) 3. 按照4.3.1节规整规则,自动向上规整后(2c4Gi) 4. 开启扩大容器的内存资源隔离上限,设置所有容器的limit资源到4Gi |