概念

默认情况下,kubernetes不会限制pod等资源对象使用系统资源,单个pod或者容器可以无限制使用系统资源。

kubernetes的资源管理分为资源请求(request)和资源限制(limit),资源请求能够保证Pod有足够的资源来运行,而资源限制则是防止某个Pod无限制地使用资源,导致其他Pod崩溃。kubernetes1.5之前的版本只支持CPU和内存这两种资源类型。

三种方式

kubernetes的资源管理有3种方式,分别是单个资源对象的资源管理(以下简称resource)、limitranges、resourcequotas。resource和limitranges可以单独使用,也可以同时使用,而resourcequotas必须配合resource或者limitranges使用。limitranges和resourcequotas是针对于namespace的。

单个资源对象的资源管理

resource是针对资源对象中单个容器进行资源管理,在创建/变更资源对象时指定的。

详情请见http://blog.csdn.net/liyingke112/article/details/76155428

limitranges

LimitRange(简称limits)基于namespace的资源管理,包括pod和container的最小、最大和default、defaultrequests等。一旦创建limits,以后创建资源时,K8S将该limits资源限制条件默认&强制给pod,创建后发现不符合规则,将暂停创建pod。

详情请见http://blog.csdn.net/liyingke112/article/details/77198045

resourcequotas

Resource Quotas(资源配额,简称quota)是为了namespace进行资源配额,限制资源使用的一种策略。对于资源管理来说,quota是管理该namespace下所有资源对象的CPU、内存的limits和request的总量,如果超过该限制,资源对象无法创建。

详情请见http://blog.csdn.net/liyingke112/article/details/77369427

配置规则

1、每个namespace有且只有一个limits和quota

2、limits的同种类型(CPU或者memory)配置规则:

每个容器(type: container):max>=default>=defaultRequest>min

       每个pod(type: pod):max>=min

pod和容器对应关系:容器max*容器数<=pod max;容器min*容器数<=pod min

3、在同一个namespace下,limits和单个资源对象的资源管理(resource)同时使用,同种类型(CPU或者memory)配置规则:resource的单个资源配置范围不能超过limit的容器范围,总和不能超过limit的pod范围。

具体如下:

resource的request(如有多个容器,所有的)>=limits的容器的defaultrequets

resource的request的总和>=limits的pod的min

resource的limit(如有多个容器,所有的)<=limits的容器的requets*容器数

resource的limit的总和<=limits的pod的max

配置正确,kubernetes将按照resource进行资源管理,如果配置错误,无法创建对象。

4、quota需要配合limits或者resource,如果没有配置limits时,每次创建对象时,必须配置resource,否则无法创建对象

5、该namespace下,所有pod/容器的CPU或者memory的limit、request的任意一种总量大于quota相对应的值后,无法分配更多的系统资源,无法创建新的资源对象,无法扩容RC、RS等。

使用心得

1、资源管理对象单一性

尽量使用limits针对容器(更好)或者pod的资源管理,尽量不同时针对容器和pod,在一pod多容器情况下,即使有充足系统资源,创建资源对象失败几率高。

在limits使用的namespace下,最好不要在创建资源时使用source。

2、资源管理类型单一性

使用资源限制(limit或者max)或者资源请求(request或者min)

同时使用时,最好保持“1、资源管理对象单一性”

3、服务部署单一性

由于limits会针对该namespace下的所有pod或者容器,所以在该namespace下尽量部署资源需求相同的服务

4、合理配置

[置顶] kubernetes--资源管理的更多相关文章

  1. [置顶] kubernetes创建资源yaml文件例子--pod

    kubernetes创建pod的yaml文件,参数说明 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 ...

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

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

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

    概念 LimitRange(简称limits)基于namespace的资源管理,包括pod和container的最小.最大和default.defaultrequests等. 一旦创建limits,以 ...

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

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

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

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

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

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

  7. [置顶] kubernetes创建资源yaml文件例子--rc

    apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: ReplicationController #指定创建资源的角色/类型 metadata: ...

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

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

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

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

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

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

随机推荐

  1. ASP.NET——真假分页

    所谓分页,就是把所有要显示的内容分成n多页来显示.那为什么要用分页而不直接全部显示呢?这就好比一本书,我们可以用一张纸写完全部书的内容,但实际上并不是这么做的.我们把网页分成一页一页的,其实很大程度上 ...

  2. 什么是SQL注入?(理解)

    SQL注入攻击是黑客对数据库进行攻击的常用手段之一.一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,注入者可以在表单中输入一段数据库查询代码并提交,程序将提交的信息拼凑生成一个完整s ...

  3. cf 834 E. Ever-Hungry Krakozyabra

    cf 834 E. Ever-Hungry Krakozyabra(爆搜+数位dp) 题意: 定义一种inedible tail为一个数把每一位数字按不降的顺序排列后,去掉前导0组成的序列 比如570 ...

  4. (转)Ant使用例子

    文章来自:http://www.blogjava.net/feng0801/archive/2014/07/29/416297.html Ant是一个Apache基金会下的跨平台的构件工具,它可以实现 ...

  5. Codeforces Round #522 (Div. 2) C. Playing Piano

    C. Playing Piano 题目链接:https://codeforces.com/contest/1079/problem/C 题意: 给出数列{an},现在要求你给出一个数列{bn},满足: ...

  6. eclipse增加jar包方式对比

    add external jars  = 增加工程外部的包add jars = 增加工程内包add library = 增加一个库add class folder = 增加一个类文件夹 add jar ...

  7. Ubuntu虚拟机编译Android6.0总结

    1 前言 昨天使用清华的源下载了android 6.0的源码,校园网可以达到10M的速度,爽!今天一大早就迫不及待地准备编译一个模拟器版本,看看效果,哪知竟然耗费了一整天的时间才搞定...为了避免其他 ...

  8. 口红游戏 插口红游戏 h5页面开发

    目前火热的口红机游戏,需要在设备前参与,然后成功后即可赢得口红,作为平台运营者来说还是比较重资产的,目前我们将它搬到了线上.每个人都可以远程玩这样的口红机游戏了.直接在手机微信里试玩,成功后,后台即可 ...

  9. 百度之星复赛T6&&hd6149 ——Valley Numer II

    Problem Description 众所周知,度度熊非常喜欢图. 它最近发现了图中也是可以出现 valley —— 山谷的,像下面这张图. 为了形成山谷,首先要将一个图的顶点标记为高点或者低点.标 ...

  10. MTK_GPIO口的定制

    http://blog.csdn.net/zuoyioo7/article/details/77863291如果需要定制GPIO口呢,需要使用mediatek/dct/DrvGen.exe工具,点击O ...