• [置顶] kubernetes--资源管理


    概念

    默认情况下,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、合理配置

           

  • 相关阅读:
    C语言_航模社第四节
    C语言_航模社第三节
    C语言交换两个变量的值
    C语言表达分段函数
    c语言_2017.10.22
    stm32_配置GPIO点亮led灯
    prteus8安装教程
    安装keil_5步骤
    nginx配置实现https的配置文件方法
    TortoiseGit 代码版本回退及返回
  • 原文地址:https://www.cnblogs.com/lykops/p/7465021.html
Copyright © 2020-2023  润新知