简介
本文介绍K8S资源的requests和limits。
官网网址
含义
定义 Pod 时可以为容器设定所需要的资源数量。最常见的是 CPU 和内存(RAM)大小。
request(请求):kubelet会为容器预留相应的资源;kube-scheduler 根据此信息来决定将 Pod 调度到哪个节点上。
limit(限制):确保运行的容器不会使用超出所设限制的资源。
超出limits会怎样?
CPU
CPU属于弹性资源,因为CPU是时间片轮转等算法实现的调度,按比例为Pod进行分配。
k8s将CPU资源最小单位定义为一千分之一个CPU,单位为:m(millicpu的意思,也可以称为:毫核)。设置cpu.requests = 0.5 和cpu.requests = 500m是等价的,它代表该Pod所请求的资源是CPU资源的一半。CPU资源按每个Pod设置值的比例进行分配,权重大的Pod会获得比权重小的Pod更多的 CPU 时间。
CPU资源限制不是绝对的,Pod可能会使用超出限制的CPU资源而不会被杀死。但节点CPU满负荷运转的最终结果是:应用延时增加,响应变慢,同时节点会禁止新的Pod创建。
内存
内存属于非弹性资源,因为内存资源是进程独占的,因此k8s对内存使用限制更加严格。
一旦节点可用内存耗尽,或者Pod使用资源超过limits,Pod一定会被杀死并重启。
请先
!