置顶 2017年08月15日 17:55:16 lykops 阅读数:1694
版权声明:本文属于原创,欢迎转载,转载请保留出处:http://blog.youkuaiyun.com/liyingke112 https://blog.youkuaiyun.com/liyingke112/article/details/77198045
下文基于kubernetes 1.5.2版本编写
概念
LimitRange(简称limits)基于namespace的资源管理,包括pod和container的最小、最大和default、defaultrequests等。
一旦创建limits,以后创建资源时,K8S将该limits资源限制条件默认/强制给pod,创建后发现不符合规则,将暂停创建pod。
在创建资源时,用户可以为pod自定义资源管理限制,在创建时会去检查和匹配limits值,发现不匹配将在创建时报错。创建后,该pod的资源使用遵守自定义规则,而不会遵守namespace的limits限制。
例子
-
kubectl delete -f lykops-limitrangerange.yaml -
cat << EOF > lykops-limitrangerange.yaml -
apiVersion: v1 -
kind: LimitRange -
metadata: -
namespace: default -
name: lykops-limitrange -
labels: -
project: lykops -
app: limitrange -
version: v1 -
spec: -
limits: -
- max: -
cpu: 1 -
memory: 1Gi -
min: -
cpu: 0.05 -
memory: 64Mi -
type: Pod -
#注意pod只能这么多参数 -
- default: -
cpu: 0.2 -
memory: 200Mi -
defaultRequest: -
cpu: 0.01 -
memory: 16Mi -
max: -
cpu: 0.25 -
memory: 256Mi -
min: -
cpu: 0.005 -
memory: 8Mi -
#container只能这么多参数 -
type: Container -
EOF -
kubectl create -f lykops-limitrangerange.yaml
参数说明
每容器(type: container)
-
min:资源紧张时,最低保证可以使用的资源是: CPU 0.005个核,内存8M -
max:资源空闲时,最大可以使用的资源是:CPU 0.25个核,内存256M -
default:默认时,限制使用的资源是:CPU 0.2个核,内存200M -
defaultRequest:默认时,最低保证可以使用的资源是: CPU 0.01个核,内存16M
每pod(type: pod)
-
min:最低保证可以使用的资源是: CPU 0.05个核,内存64M -
max最大可以使用的资源是:CPU 1个核,内存1G
使用规则
1、每个namespace应该只有一个limits;
2、limits值设置:
-
每容器(type: container) -
max>=default>=defaultRequest>min -
每pod(type: pod) -
max>=min -
整个 -
容器的max*容器数<=pod的max -
容器的min*容器数<=pod的min
3、创建资源时,pod自定义资源限制的规则:
-
自定义的单个request>=limits的容器的defaultrequets -
自定义的request的总和>=limits的pod的min -
自定义的单个limit<=limits的容器的requets -
自定义的limit的总和<=limits的pod的max
使用心得
为了防止出现创建资源失败的情况,个人建议:
-
1、只使用limits的pod或者container中的一种,尽量不使用同时使用,特别在pod中有多容器需求的情况下。 -
2、尽量使用max,尽量不同时使用max和min -
3、由于limits会针对该namespace下的所有新建的pods,所以在该namespace下应该运行哪些资源需求相同的业务 -
4、在复杂的limits配置下,不要在创建资源时使用自定义配置。
7585



被折叠的 条评论
为什么被折叠?



