K8s 资源配额管理对象 ResourcesQuota
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的更多相关文章
- kubernetes调度之资源配额
系列目录 当多个用户或者开发团队共享一个有固定节点的的kubernetes集群时,一个团队或者一个用户使用的资源超过他应当使用的资源是需要关注的问题,资源配额是管理员用来解决这个问题的一个工具. 资源 ...
- kubernetes调度之资源配额示例
系列目录 前面说过,资源配额限制在指定名称空间下,对资源对象数量和特定类型的资源的限制,你可以在ResourceQuota中指定配额 创建名称空间 我们创建一个新的名称空间来演示 kubectl cr ...
- 使用 Admission Webhook 机制实现多集群资源配额控制
1 要解决的问题 集群分配给多个用户使用时,需要使用配额以限制用户的资源使用,包括 CPU 核数.内存大小.GPU 卡数等,以防止资源被某些用户耗尽,造成不公平的资源分配. 大多数情况下,集群原生的 ...
- docker容器资源配额控制
转自:http://blog.csdn.net/horsefoot/article/details/51731543 文/ 天云软件 容器技术团队 Docker通过cgroup来控制容器使用的资源配额 ...
- Prometheus 监控K8S 资源状态对象
Prometheus 监控K8S 资源状态对象 官方文档:https://github.com/kubernetes/kube-state-metrics kube-state-metrics是一个简 ...
- k8s资源清单基础
资源清单介绍 创建资源的方法 apiserver仅接收JSON格式的资源定义 yaml格式提供配置清单 apiserver可自动把yaml转换成json格式数据 资源清单五个一级字段 1.ap ...
- docker容器资源配额控制_转
转自:docker容器资源配额控制 ■ 文/ 天云软件 容器技术团队 docker通过cgroup来控制容器使用的资源配额,包括CPU.内存.磁盘三大方面,基本覆盖了常见的资源配额和使用量控制. cg ...
- 3.k8s资源控制器rs Deployment Job
k8s资源控制器 #控制器类型 ReplicaSet #rs,确保pod副本数,rs已替代rc Deployment #管理rs,升级.回滚.扩容pod DaemonSet #在每个节点运行一个Pod ...
- k8s资源需求及资源限制
在k8s上,可由容器或pod请求或消费的计算资源时指cpu和内存,这也是目前仅有的受支持的两种类型.相比较来说,cpu属于可压缩资源,即资源额度可按需收缩,而内存则是不可压缩型资源,对其执行收缩操作可 ...
- 理解k8s资源限制系列(二):cpu time
本文介绍几种在K8S中限制资源使用的几种方法. 资源类型 在K8S中可以对两类资源进行限制:cpu和内存. CPU的单位有: 正实数,代表分配几颗CPU,可以是小数点,比如0.5代表0.5颗CPU,意 ...
随机推荐
- 【LeetCode】58. Length of Last Word 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 库函数 双指针 单指针 日期 题目地址:https: ...
- [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎
[源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 目录 [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 0x00 摘要 0x0 ...
- kafka2.x常用命令笔记(一)创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费
接触kafka开发已经两年多,也看过关于kafka的一些书,但一直没有怎么对它做总结,借着最近正好在看<Apache Kafka实战>一书,同时自己又搭建了三台kafka服务器,正好可以做 ...
- CS5265 demoboard|CS5265测试板电路参考|CS5265 Typec转HDMI 4K60HZ方案
CS5265是TYPEC转HDMI2.0音视频转换芯片,CS5265符合DP1.4协议,且输出的视频信号是HDMI2.0 即4K60HZ CS5265集成了DP1.4兼容接收机和HDMI2.0b兼容 ...
- 新手入门typeScript
强类型与弱类型(类型安全) 强类型不允许随意的隐士类型转换,而弱类型是允许的 变量类型允许随时改变的特点,不是强弱类型的差异 静态类型与动态类型(类型检查) 静态类型:一个变量声明时它的类型就是明确的 ...
- 4.1.4 统计“锦途网”旅游线路平均价格,并采用尽可能多的方式将该价格赋给用户会话变量 @avg_short_price,并输出该变量
查看本章节 查看作业目录 需求说明: 统计"锦途网"旅游线路平均价格,并采用尽可能多的方式将该价格赋给用户会话变量 @avg_short_price,并输出该变量 在 MySQL ...
- Java中对象的内存分配机制
一.内存划分 Java把内存划分为两种,一种是栈内存,另一种是堆内存. 1.栈内存 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配.当在一段代码块定义一个变量时,Java就在栈 ...
- 编写Java程序,使用JDBC连接SQL Server数据库
返回本章节 返回作业目录 需求说明: 使用JDBC连接SQL Server数据库 SQL Server数据库位于192.168.2.101. 所需连接的数据库为eshop_db,用户名为test,密码 ...
- 【】Nessus安全测试插件编写教程
Nessus安全测试插件编写教程 作者:Renaud Deraison 翻译:nixe0n 1.怎样编写一个高效的Nessus安全测试插件 在Nessus安全测试系统中, 所有的安全测试都是由ness ...
- python+appium运行提示找不到adb.exe “An unknown server-side error occurred while processing the command. Original error: Could not find 'adb.exe' in ["D:\\adt\\sdk;\\platform-tools\\adb.exe"”
自己踩过的坑,不记下来就会忘掉,忘了就会不断的重复踩坑!! 重来在一台电脑上搭建了python的环境,在运行的时候,提示找不到adb.exe,看到这个问题我在想是不是我的环境变量配置有问题,我就去改了 ...