概念

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配置下,不要在创建资源时使用自定义配置。

[置顶] kubernetes资源对象--limitranges的更多相关文章

  1. [置顶] kubernetes资源对象--Label

    概念 Label机制是K8S中一个重要设计,通过Label进行对象弱关联,灵活地分类和选择不同服务或业务,让用户根据自己特定的组织结构以松耦合方式进行服务部署. Label是一对KV,对用户而言非常有 ...

  2. [置顶] kubernetes资源对象--ResourceQuotas

    概念 Resource Quotas(资源配额,简称quota)是对namespace进行资源配额,限制资源使用的一种策略. K8S是一个多用户架构,当多用户或者团队共享一个K8S系统时,SA使用qu ...

  3. [置顶] kubernetes资源对象--ConfigMap

    原理 很多生产环境中的应用程序配置较为复杂,可能需要多个config文件.命令行参数和环境变量的组合.使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性.尽管Secret允许类似 ...

  4. [置顶] kubernetes资源对象--Horizontal Pod Autoscaling(HPA)

    概念 HPA全称Horizontal Pod Autoscaling,即pod的水平自动扩展.自动扩展主要分为两种,其一为水平扩展,针对于实例数目的增减:其二为垂直扩展,即单个实例可以使用的资源的增减 ...

  5. [置顶] kubernetes资源类型--ingress

    Ingress在K8S1.1之前还没有. 概念 Ingress是一种HTTP方式的路由转发机制,为K8S服务配置HTTP负载均衡器,通常会将服务暴露给K8S群集外的客户端. Ingress是一个允许入 ...

  6. [置顶] kubernetes资源类型--PetSets/StatefulSet

    PetSet首次在K8S1.4版本中,在1.5更名为StatefulSet.除了改了名字之外,这一API对象并没有太大变化. 注意:以下内容的验证环境为CentOS7.K8S版本1.5.2,并部署Sk ...

  7. [置顶] kubernetes资源类型--持久化存储Persistent Volume和Persistent Volume Claim

    概念 存储管理跟计算管理是两个不同的问题.理解每个存储系统是一件复杂的事情,特别是对于普通用户来说,有时并不需要关心各种存储实现,只希望能够安全可靠地存储数据. 为了简化对存储调度,K8S对存储的供应 ...

  8. [置顶] kubernetes资源类型--secret和Service Account

    secret 概念 secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息.将这些信息放在secret对象中比 直接放在pod或dock ...

  9. [置顶] kubernetes资源类型--DaemonSet

    概念 DaemonSet能够让所有(或者特定)的节点运行同一个pod. 当节点加入到K8S集群中,pod会被(DaemonSet)调度到该节点上运行,当节点从K8S集群中被移除,被DaemonSet调 ...

随机推荐

  1. DataBase -- SQL INNER JOIN

    SQL INNER JOIN 关键字 在表中存在至少一个匹配时,INNER JOIN关键字返回行. INNER JIN关键字语法 SELECT column_name(s) FROM table_na ...

  2. thr [树链剖分+dp]

    题面 思路 首先,可以有一个$dp$的思路 不难发现本题中,三个点如果互相距离相同,那么一定有一个"中心点"到三个点的距离都相同 那么我们可以把本题转化计算以每个点为根的情况下,从 ...

  3. Uva10635 Prince and Princess

    题目戳这里 这题如果用\(f_{i,j}\)这样dp的话肯定过不了,必须另辟蹊径.题目说了数字不重复.我们先只留下两个数组共有的数字.然后我们处理出这样一个数组\(S\),\(S_i\)表示\(A_i ...

  4. 兼容firstChild和firstElementChild

    1.nextSibling和nextElementSibling 顾名思义,就是找下一个节点 nextSibling在低版本浏览器中可以顺利找到下一个元素节点,而在正常浏览器中找到的包含中间空格. n ...

  5. mysql索引记

    如果字段是数值型,where 是字符串型,走索引但是,如果字段是字符串型,但是where 是数值型,不走索引

  6. Secret Cow code(USACO)

    题目描述:zxyer为了防止他的标程被别人抄走,他在计算机中的rar文件上设置了一个密码,其中每一个密码都有一个初始字符串,字符串由大写字母组成,且长度不超过30位,每一个密码还有一个询问,询问为一个 ...

  7. Linux有名信号量的创建(sem_open中name参数构造)【转】

    转自:http://blog.csdn.net/gfeng168/article/details/40740865 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.sem_open函数nam ...

  8. 一篇不错的v4l2入门文档【转】

    转自:http://blog.chinaunix.net/uid-26851094-id-3270803.html 原帖地址: http://www.isongzi.com/2009/02/23/v4 ...

  9. libv4l 库【转】

    转自:http://www.cnblogs.com/emouse/archive/2013/03/05/2944522.html V4L2摸索了两天还是一头雾水,今天调试一个程序发现两个头文件: #i ...

  10. c/c++相关面试准备笔记1

    在c++程序中调用被C编译器编译后的函数,为什么要加extern  “C”? C++语言支持函数重载,C语言不支持函数重载.函数被C++编译后在库中的名字与C语言的不同.C++提供了C连接交换指定符号 ...