ITPub博客

kubernetes实践之四十七:ResourceQuota Controller

原创 Docker/K8 作者:百联达 时间:2018-05-28 16:52:27 0 删除 编辑
一: 简介

资源配额管理(ResourceQuota Controller)确保了指定的资源对象在任何时候都不会超量占用系统物理资源,避免了由于某些业务进程的设计或实现的缺陷导致整个系统运行紊乱,甚至意外宕机,对整个集群的平稳运行和稳定性有非常重要的作用。

目前Kubernetes支持如下三个层次的资源配额管理:

1.容器级别,可以对CPU和Memory进行限制。
2.Pod级别,可以对一个Pod内所有容器的可用资源进行限制。
3.Namespace级别
   a.Pod数量
   b.Replication Controller数量
   c.Service 数量
   d.ResourceQuota数量
   e.Secret数量
   f.PV 数量

二:资源类型

1. CPU 和 memory 都是资源类型。资源类型具有基本单位。CPU的单位是core,memory的单位是byte。CPU和内存统称为计算资源,也可以称为资源。计算资源的数量是可以被请求、分配和消耗的可测量的。

2.Pod中的每个容器都可以指定以下的?个或者多个值:

点击(此处)折叠或打开

  1. spec.containers[].resources.limits.cpu
  2. spec.containers[].resources.limits.memory
  3. spec.containers[].resources.requests.cpu
  4. spec.containers[].resources.requests.memory
三:详细说明

Kubernetes的配额管理是通过Admission Control 来控制的,当前提供了两种方式的配额约束,分别是LimitRanger与ResourceQuota. 其中LimitRanger用于Pod和Container上,而ResourceQuota则作用于Namespace上。

1.如果在Pod定义中同时声明了LimitRanger,则用户通过API Server请求创建或修改资源时,Admission Control会计算当前配额的使用情况,如果不符合配额约束,则创建对象失败。

2.对于定义了ResourceQuota的Namespace, ResourceQuota Controller组件则负责定期统计和生成该Namespace下的各类对象的资源使用总量,统计结果包括Pod,Service,RC,Secret和PV等对象实例个数。以及该Namespace下所有Container实例所使用的资源量(目前包括CPU和内存)。然后将这些统计结果写入etcd的resourceQuotaStatusStorage目录中。

3.统计信息被Admission Control使用,以确保相关Namespace下的资源配额总量不会超过ResourceQuota中的限定值。

点击(此处)折叠或打开

  1. apiVersion: v1
  2. kind: ResourceQuota
  3. metadata:
  4.   namespace: lykops
  5.   name: lykops
  6.   labels:
  7.     project: lykops
  8.     app: resourcequota
  9.     version: v1
  10. spec:
  11.   hard:
  12.     pods: 50
  13.     requests.cpu: 0.5
  14.     requests.memory: 512Mi
  15.     limits.cpu: 5
  16.     limits.memory: 16Gi
  17.     configmaps: 20
  18.     persistentvolumeclaims: 20
  19.     replicationcontrollers: 20
  20.     secrets: 20
  21.     services: 50



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-2155234/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-02-05

  • 博文量
    285
  • 访问量
    892910