Kubernetes 是一个多租户平台,更是一个镜像集群管理工具。一个 Kubernetes 集群中的资源一般是由多个团队共享的,这时候经常要考虑的是如何对这个整体资源进行分配。在 kubernetes 中提供了 Namespace 来讲应用隔离,那么是不是也能将资源的大小跟 Namespace 挂钩进行一起隔离呢?这当然是可以的,Kubernetes 提供了 Resources Quotas 工具,让集群管理员可以创建 ResourcesQuota 对象管理这个集群整体资源的配额,它可以限制某个 Namespace 下计算资源的使用量,也可以设置某个 Namespace 下某种类型对象的上限等。

上面说白了就是,通过设置不同的 Namespace 与对应的 RBAC 权限将各个团队隔离,然后通过 ResourcesQuota 对象来限制该 Namespace 能够拥有的资源的多少

ResourceQuota 对象一般在 Kubernetes 中是默认开启的,如果未开启且不能创建该对象,那么可以进入 Master 的 Kubernetes 配置目录修改 Apiserver 配置文件 kube-apiserver.yaml,在添加参数 --admission-control=ResourceQuota 来开启。

spec:
containers:
- command:
- kube-apiserver
- --advertise-address=192.168.2.11
- --allow-privileged=true
- --authorization-mode=Node,RBAC
- --admission-control=ResourceQuota #开启ResourceQuota
- ......
创建 resources-test1.y创建 resources-test1.yaml 用于设置计算资源的配额:aml 用于设置计算资源的配额:

apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
pods: "4"
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi 创建该配额对象: -n:指定限制配额的 namespace
$ kubectl apply -f resources-test1.yaml -n limit-namespace
HTML5
HSBC GROUP INTERNET ACCESS POLICY
Website:
Webfilter Categories:
Locally Defined Categories:
Troubleshooting Information HSBC Global Internet Access HTML5
HSBC GROUP INTERNET ACCESS POLICY
Website:
Webfilter Categories:
Locally Defined Categories:
Troubleshooting Information HSBC Global Internet Access BASH
查看创建后的 ResourcesQuota 配额的详细信息: $ kubectl describe quota compute-resources -n limit-namespace Name: compute-resources
Namespace: limit-namespace
Resource Used Hard
-------- ---- ----
limits.cpu 2 2
limits.memory 1Gi 2Gi
pods 2 4
requests.cpu 2 1
requests.memory 512Mi 1Gi
2)、设置某 Namespace 对象数量的配额

创建 resources-test2.yaml 用于设置对象数量的配额:

2)、设置某 Namespace 对象数量的配额

创建 resources-test2.yaml 用于设置对象数量的配额:

创建该配额对象:

$ kubectl apply -f resources-test2.yaml -n limit-namespace
HTML5
HSBC GROUP INTERNET ACCESS POLICY
Website:
Webfilter Categories:
Locally Defined Categories:
Troubleshooting Information HSBC Global Internet Access HTML5
HSBC GROUP INTERNET ACCESS POLICY
Website:
Webfilter Categories:
Locally Defined Categories:
Troubleshooting Information HSBC Global Internet Access BASH
查看创建后的 ResourcesQuota 配额的详细信息: $ kubectl describe quota object-counts -n limit-namespace Name: object-counts
Namespace: limit-namespace
Resource Used Hard
-------- ---- ----
configmaps 0 10
persistentvolumeclaims 0 4
replicationcontrollers 0 20
secrets 1 10
services 0 10
services.loadbalancers 0 2

注意:一个 Namespace 中可以拥有多个 ResourceQuota 对象。

计算资源配额: 限制一个 Namespace 中所有 Pod 的计算资源(CPU、Memory)的总和。
存储资源配额: 限制一个 Namespace 中所有存储资源的总量。
对象数量配额: 限制一个 Namespace 中指定类型对象的数量。

(1)、ResourcesQuota 支持的计算资源:

  • cpu: 所有非终止状态的Pod中,其CPU需求总量不能超过该值。
  • limits.cpu: 所有非终止状态的Pod中,其CPU限额总量不能超过该值。
  • limits.memory: 所有非终止状态的Pod中,其内存限额总量不能超过该值。
  • memory: 所有非终止状态的Pod中,其内存需求总量不能超过该值。
  • requests.cpu: 所有非终止状态的Pod中,其CPU需求总量不能超过该值。
  • requests.memory: 所有非终止状态的Pod中,其内存需求总量不能超过该值。

(2)、ResourcesQuota 支持限制的存储资源:

  • requests.storage:所有 PVC 请求的存储大小总量不能超过此值。
  • Persistentvolumeclaims: PVC 对象存在的最大数目。
  • .storageclass.storage.k8s.io/requests.storage: 和 StorageClass 关联的 PVC 的请求存储的量大小不能超过此设置的值。
  • .storageclass.storage.k8s.io/persistentvolumeclaims: 和 StorageClass 关联的 PVC 的总量。

(3)、ResourcesQuota 支持限制的对象资源:

  • Configmaps: 允许存在的 ConfigMap 的数量。
  • Pods: 允许存在的非终止状态的 Pod 数量,如果 Pod 的 status.phase 为 Failed 或 Succeeded , 那么其处于终止状态。
  • Replicationcontrollers: 允许存在的 Replication Controllers 的数量。
  • Resourcequotas: 允许存在的 Resource Quotas 的数量。
  • Services: 允许存在的 Service 的数量。
  • services.loadbalancers: 允许存在的 LoadBalancer 类型的 Service 的数量。
  • services.nodeports: 允许存在的 NodePort 类型的 Service 的数量。
  • Secrets: 允许存在的 Secret 的数量。

K8s 资源配额管理对象 ResourcesQuota的更多相关文章

  1. kubernetes调度之资源配额

    系列目录 当多个用户或者开发团队共享一个有固定节点的的kubernetes集群时,一个团队或者一个用户使用的资源超过他应当使用的资源是需要关注的问题,资源配额是管理员用来解决这个问题的一个工具. 资源 ...

  2. kubernetes调度之资源配额示例

    系列目录 前面说过,资源配额限制在指定名称空间下,对资源对象数量和特定类型的资源的限制,你可以在ResourceQuota中指定配额 创建名称空间 我们创建一个新的名称空间来演示 kubectl cr ...

  3. 使用 Admission Webhook 机制实现多集群资源配额控制

    1 要解决的问题 集群分配给多个用户使用时,需要使用配额以限制用户的资源使用,包括 CPU 核数.内存大小.GPU 卡数等,以防止资源被某些用户耗尽,造成不公平的资源分配. 大多数情况下,集群原生的 ...

  4. docker容器资源配额控制

    转自:http://blog.csdn.net/horsefoot/article/details/51731543 文/ 天云软件 容器技术团队 Docker通过cgroup来控制容器使用的资源配额 ...

  5. Prometheus 监控K8S 资源状态对象

    Prometheus 监控K8S 资源状态对象 官方文档:https://github.com/kubernetes/kube-state-metrics kube-state-metrics是一个简 ...

  6. k8s资源清单基础

    资源清单介绍 创建资源的方法  apiserver仅接收JSON格式的资源定义  yaml格式提供配置清单 apiserver可自动把yaml转换成json格式数据 资源清单五个一级字段   1.ap ...

  7. docker容器资源配额控制_转

    转自:docker容器资源配额控制 ■ 文/ 天云软件 容器技术团队 docker通过cgroup来控制容器使用的资源配额,包括CPU.内存.磁盘三大方面,基本覆盖了常见的资源配额和使用量控制. cg ...

  8. 3.k8s资源控制器rs Deployment Job

    k8s资源控制器 #控制器类型 ReplicaSet #rs,确保pod副本数,rs已替代rc Deployment #管理rs,升级.回滚.扩容pod DaemonSet #在每个节点运行一个Pod ...

  9. k8s资源需求及资源限制

    在k8s上,可由容器或pod请求或消费的计算资源时指cpu和内存,这也是目前仅有的受支持的两种类型.相比较来说,cpu属于可压缩资源,即资源额度可按需收缩,而内存则是不可压缩型资源,对其执行收缩操作可 ...

  10. 理解k8s资源限制系列(二):cpu time

    本文介绍几种在K8S中限制资源使用的几种方法. 资源类型 在K8S中可以对两类资源进行限制:cpu和内存. CPU的单位有: 正实数,代表分配几颗CPU,可以是小数点,比如0.5代表0.5颗CPU,意 ...

随机推荐

  1. 【LeetCode】70. Climbing Stairs 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目大意 题目大意 解题方法 递归 记忆化搜索 动态规划 空间压缩DP 日期 [L ...

  2. 【LeetCode】989. Add to Array-Form of Integer 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 数组转整数再转数组 模拟加法 日期 题目地址:htt ...

  3. 【LeetCode】55. Jump Game 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 贪心 日期 题目地址:https://leetcod ...

  4. 【剑指Offer】数组中重复的数字 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 Set 快慢指针 日期 题目地址:https://leetcod ...

  5. JDK httpClient 详解(源码级分析)——概览及架构篇

    1. 前言 2018年9月,伴随着java 11的发布,内置的httpclient正式登上了历史的舞台.此前,JDK内置的http工具URLConnection性能羸弱,操作繁琐,饱受诟病,也因此令如 ...

  6. 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款

    查看本章节 查看作业目录 需求说明: 某用户共有两张银行卡,账户名称相同,但卡号和余额不同.模拟用户使用这两张银行卡进行消费的过程,并打印出消费明细 实现思路: 项目中创建账户类 Account,类中 ...

  7. Sentry 企业级数据安全解决方案 - Relay 项目配置

    内容整理自官方文档 系列 Sentry 企业级数据安全解决方案 - Relay 入门 Sentry 企业级数据安全解决方案 - Relay 运行模式 Sentry 企业级数据安全解决方案 - Rela ...

  8. Selenium_使用switch_to.alert处理弹窗(14)

    与switch_to.window 和 switch_to.frame 相比,switch_to.alert的alert方法使用了@property 装饰器,所以在使用时alert被当成属性调用. 演 ...

  9. python 面向对象:类属性

    一.概念和使用 类属性就是给类对象定义的属性 类属性用于记录与这个类相关的特征 类属性不会用于记录具体对象的特征 使用赋值语句在  class  关键字下方可以定义类属性 二.代码演示 示例需求: 定 ...

  10. Centos7 selinux关闭

    getenforce ---查看selinux服务是否开启 setenforce 0|1 0:Permissive 1:Enforcing 上面使用setenforce是临时的效果 永久关闭方法: v ...