当前位置: 首页 > news >正文

K8S资源限制之ResourceQuota

ResourceQuota介绍

在K8S中,大部分资源都可以指定到一个名称空间下,因此可以对一个名称空间的计算资源,存储资源,资源数量等维度做资源限制。

如限制pod数量、svc数量,控制器数量,限制PVC请求的存储量

注意事项

  • 多个quota资源只要满足其中任意一个都会被限制,quota基于名称空间的粒度进行限制,无法做到一个名称空间下针对某个pod进行限制
  • 名称空间使用quota进行了资源量请求限制,创建pod时必须指定pod的资源请求和限制。否则quota会拒绝创建
ResourceQuota配置案例
1 基于资源请求量进行限制

1.首先创建ResourceQuota资源,声明该名称空间下的CPU资源使用上线,pod数量…

cat > 01-compute-resources.yaml <<EOF
apiVersion: v1
kind: ResourceQuota
metadata:name: compute-resourcesnamespace: kube-public
spec:# 定义硬性配置hard:# 配置名称空间请求cpu的相关参数,请求的总 CPU 核心数为 1,使用的最大限制为 2 核心requests.cpu: "1"limits.cpu: "2"requests.memory: 2Gilimits.memory: 3Gi# 定义GPU相关的参数# requests.nvidia.com/gpu: 4
EOF 

运行后查看配额

[root@master231~]# kubectl -n kube-public get quota
NAME                AGE    REQUEST                                     LIMIT
compute-resources   106s   requests.cpu: 0/1, requests.memory: 0/2Gi   limits.cpu: 0/2, limits.memory: 0/3Gi

2.创建第1个pod,让其用掉名称空间下的一部分资源

cat > 02-pods.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:name: pods-nginxnamespace: kube-public
spec:containers:- name: webimage: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1resources:requests:cpu: 0.5memory: 1Gilimits:cpu: 1memory: 2Gi
EOF
[root@master231~]# kubectl -n kube-public get quota
NAME                AGE    REQUEST                                          LIMIT
compute-resources   9m8s   requests.cpu: 500m/1, requests.memory: 1Gi/2Gi   limits.cpu: 1/2, limits.memory: 2Gi/3Gi

3.创建第2个pod,这时名称空间的资源已经不足了

cat > 03-pods.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:name: pods-alpinenamespace: kube-public
spec:containers:- name: c1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v2resources:requests:cpu: 1.5memory: 2Gilimits:cpu: 2memory: 4Gi
EOF

kubectl apply -f 07-pods2.yaml 运行时直接提示拒绝创建

Error from server (Forbidden): error when creating “07-pods2.yaml”: pods “pods-alpine” is forbidden: exceeded quota: compute-resources, requested: limits.cpu=2,limits.memory=4Gi,requests.cpu=1500m,requests.memory=2Gi, used: limits.cpu=1,limits.memory=2Gi,requests.cpu=500m,requests.memory=1Gi, limited: limits.cpu=2,limits.memory=3Gi,requests.cpu=1,requests.memory=2Gi

2 基于对象数量进行限制

1.编写quota限制并应用,限制对应资源数量。上一步 基于资源请求量进行限制 的quota和pod留着不要删除。

cat > 01-object-counts.yaml <<EOF
apiVersion: v1
kind: ResourceQuota
metadata:name: object-countsnamespace: kube-public
spec:hard:pods: "10"count/deployments.apps: "3"count/services: "3"
EOF

再次查看quota限制

[root@master231~]# kubectl -n kube-public get quota
NAME                AGE     REQUEST                                                        LIMIT
compute-resources   46s     requests.cpu: 500m/1, requests.memory: 1Gi/2Gi                 limits.cpu: 1/2, limits.memory: 2Gi/3Gi
object-counts       5m57s   count/deployments.apps: 0/3, count/services: 0/3, pods: 1/10

2.创建pod,这次使用控制器指定pod数量。但是并不指定资源期望和限制

cat > 02-deploy-xiuxian.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: deloy-xiuxiannamespace: kube-public 
spec:replicas: 3selector:matchLabels:apps: xiuxiantemplate:metadata:labels:apps: xiuxianversion: v1spec:containers:- name: c1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v2
EOF

pod虽然可以运用,但是没有创建出来

[root@master231~]# kubectl apply -f 02-deploy-xiuxian.yaml 
deployment.apps/deloy-xiuxian create[root@master231~]# kubectl -n kube-public get pods
NAME         READY   STATUS    RESTARTS   AGE
pods-nginx   1/1     Running   0          4m14s[root@master231~]# kubectl -n kube-public get deployments.apps 
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
deloy-xiuxian   0/3     0            0           3m10s

3.查看名称空间的事件信息:kubectl -n kube-public get events,看到以下信息

compute-resources: must specify limits.cpu,limits.memory,requests.cpu,requests.memory。

这是因为 Deployment 的 Pod 配置没有明确指定 requests.cpurequests.memorylimits.cpulimits.memory,而 ResourceQuota (compute-resources) 要求必须设置这些字段

4.移除compute-resources quota,再重建02-deploy-xiuxian.yaml,可以看到pod正常创建出来了

[root@master231~]# kubectl -n kube-public get quota
NAME                AGE   REQUEST                                                        LIMIT
compute-resources   26m   requests.cpu: 500m/1, requests.memory: 1Gi/2Gi                 limits.cpu: 1/2, limits.memory: 2Gi/3Gi
object-counts       31m   count/deployments.apps: 1/3, count/services: 0/3, pods: 1/10   
[root@master231~]# kubectl -n kube-public delete quota compute-resources
resourcequota "compute-resources" deleted
[root@master231~]# kubectl -n kube-public get quota
NAME            AGE   REQUEST                                                        LIMIT
object-counts   31m   count/deployments.apps: 1/3, count/services: 0/3, pods: 1/10
[root@master231~]# kubectl -n kube-public get pods
NAME                             READY   STATUS    RESTARTS   AGE
deloy-xiuxian-8676cbd54f-9lxl4   1/1     Running   0          6s
deloy-xiuxian-8676cbd54f-bpldg   1/1     Running   0          6s
deloy-xiuxian-8676cbd54f-xgbt8   1/1     Running   0          6s
pods-nginx                       1/1     Running   0          28m
[root@master231~]# kubectl -n kube-public get quota
NAME            AGE   REQUEST                                                        LIMIT
object-counts   34m   count/deployments.apps: 1/3, count/services: 0/3, pods: 4/10

5.继续在kube-public名称空间下创建pod,这次指定数量为10个。但是已经超出了10个,所以多出的4个是不会创建出来的。

[root@master231~]# kubectl -n kube-public get pods
NAME                                  READY   STATUS    RESTARTS   AGE
deloy-xiuxian-10pod-5b85959cd-2n2dk   1/1     Running   0          7s
deloy-xiuxian-10pod-5b85959cd-gpjmn   1/1     Running   0          7s
deloy-xiuxian-10pod-5b85959cd-jpbr2   1/1     Running   0          7s
deloy-xiuxian-10pod-5b85959cd-mfnpj   1/1     Running   0          7s
deloy-xiuxian-10pod-5b85959cd-rdnrl   1/1     Running   0          7s
deloy-xiuxian-10pod-5b85959cd-sf2km   1/1     Running   0          7s
deloy-xiuxian-8676cbd54f-9lxl4        1/1     Running   0          13m
deloy-xiuxian-8676cbd54f-bpldg        1/1     Running   0          13m
deloy-xiuxian-8676cbd54f-xgbt8        1/1     Running   0          13m
pods-nginx                            1/1     Running   0          41m
[root@master231~]# kubectl -n kube-public get deployments.apps 
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
deloy-xiuxian         3/3     3            3           13m
deloy-xiuxian-10pod   6/10    6            6           11s
[root@master231~]# kubectl -n kube-public get deployments.apps deloy-xiuxian-10pod 
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
deloy-xiuxian-10pod   6/10    6            6           18s

相关文章:

K8S资源限制之ResourceQuota

ResourceQuota介绍 在K8S中&#xff0c;大部分资源都可以指定到一个名称空间下&#xff0c;因此可以对一个名称空间的计算资源&#xff0c;存储资源&#xff0c;资源数量等维度做资源限制。 如限制pod数量、svc数量&#xff0c;控制器数量&#xff0c;限制PVC请求的存储量 注…...

释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o

在不断发展的人工智能领域&#xff0c;Nexusflows 推出了 Athene-V2-Agent 作为其模型系列的强大补充。这种专门的代理模型设计用于在功能调用和代理应用中发挥出色作用&#xff0c;突破了人工智能所能达到的极限。 竞争优势 Athene-V2-Agent 不仅仅是另一种人工智能模型&…...

MongoDB索引操作和执行计划Explain()详解

一、索引操作 说明&#xff0c;下面的内容举例时&#xff0c;以"dailyTrip"collection为例。 字段内容如下&#xff1a; {"_id" : ObjectId("63ec5a971ddbe429cbeeffe3"), // object id"car_type" : "Gett", // string&…...

H3C NX30Pro刷机教程-2024-11-16

H3C NX30Pro刷机教程-2024-11-16 ref: http://www.ttcoder.cn/index.php/2024/11/03/h3c-nx30pro亲测无需分区备份 路由器-新机初始化设置路由器登录密码telnet进入路由器后台 刷机上传uboot到路由器后台在Windows环境下解压后的软件包中打开 tftpd64.exe在NX30Pro环境下通过以…...

无插件H5播放器EasyPlayer.js网页web无插件播放器vue和react详细介绍

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…...

HarmonyOS ArkUI(基于ArkTS) 开发布局 (中)

HarmonyOS ArkUI(基于ArkTS) 开发布局 &#xff08;上&#xff09; 四 层叠布局 (Stack) 层叠布局&#xff08;StackLayout&#xff09;用于在屏幕上预留一块区域来显示组件中的元素&#xff0c;提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠&…...

org.springframework.context.support.ApplicationListenerDetector 详细介绍

一&#xff0c;功能介绍 early post-processor for detecting inner beans as ApplicationListeners 早期的PostProcessor用来检测并处理内部&#xff08;inner&#xff09;bean作为 ApplicationListeners BeanPostProcessor that detects beans which implement the Applica…...

MSTP实验

单点故障---冗余---环路---STP----RSTP-----MSTP MSTP 产生的背景 因为RSTP在局域网内所有VLAN 共享一棵生成树&#xff0c;如果链路被堵塞&#xff0c;将无法承载任何流量&#xff0c;所以为了实现流量负载均衡&#xff0c;MSTP诞生了。 生成树不是基于VLAN运行的&#xff…...

Linux---shell脚本

文章目录 目录 文章目录 前言 一.Shell脚本定义 shell脚本书写规范 shell脚本执行方式 二.Shell变量 变量定义 定义规范 定义方式 变量的运算 数值运算 数值比较 未完待续...... 前言 希望通过本文的学习&#xff0c;你能够掌握Shell脚本的基本知识和实用技巧&#xff0c…...

Android12的ANR解析

0. 参考&#xff1a; ANR分析 深入理解 Android ANR 触发原理以及信息收集过程 1.ANR的触发分类: ANR分为4类&#xff1a; InputDispatchTimeout&#xff1a;输入事件分发超时5s,包括按键和触摸事件。BroadcastTimeout&#xff1a;比如前台广播在10s内未执行完成&#xff0…...

初学人工智不理解的名词3

TTS领域的名词 from gpt-4o 在 TTS&#xff08;文本到语音合成&#xff09; 领域&#xff0c;以下是 CFM、One-Step 蒸馏 和 ReFlow 的含义和作用的详细解释&#xff1a; 1. CFM&#xff08;Consistent Flow Matching&#xff09; Consistent Flow Matching&#xff08;一致流…...

ADS项目笔记 1. 低噪声放大器LNA天线一体化设计

在传统射频结构的设计中&#xff0c;天线模块和有源电路部分相互分离&#xff0c;两者之间通过 50 Ω 传输线级联&#xff0c;这种设计需要在有源电路和天线之间建立无源网络&#xff0c;包括天线模块的输入匹配网络以及有源电路的匹配网络。这些无源网络不仅增加了系统的插入损…...

J.U.C - 深入解读阻塞队列实现原理源码

文章目录 Pre生产者-消费者模式阻塞队列 vs 普通队列JUC提供的7种适合与不同应用场景的阻塞队列插入操作&#xff1a;添加元素到队列中移除操作&#xff1a;从队列中移除元素。 ArrayBlockingQueue源码解析类结构指定初始容量及公平/非公平策略的构造函数根据已有集合初始化队列…...

【大语言模型学习】LORA微调方法

LORA: Low-Rank Adaptation of Large Language Models 摘要 LoRA (Low-Rank Adaptation) 提出了一种高效的语言模型适应方法,针对预训练模型的适配问题: 目标:减少下游任务所需的可训练参数,降低硬件要求。方法:冻结预训练模型权重,注入低秩分解矩阵,从而在不影响推理…...

Spring Boot【一】

Spring Boot全局配置文件 application.properties 是 Spring Boot 的标准配置文件&#xff0c;用于集中管理应用程序的配置属性。它的主要作用是将配置信息与代码分离&#xff0c;使得应用程序更具可维护性和可配置性。 Application.yaml配置文件 YAML文件格式是JSON超集文件…...

H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…...

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩

1. rowkey的设计 ​ RowKey可以是任意字符串&#xff0c;最大长度64KB&#xff0c;实际应用中一般为10~100bytes&#xff0c;字典顺序排序&#xff0c;rowkey的设计至关重要&#xff0c;会影响region分布&#xff0c;如果rowkey设计不合理还会出现region写热点等一系列问题。 …...

Dart:字符串

字符串&#xff1a;单双引号 String c hello \c\; // hello c&#xff0c;单引号中使用单引号&#xff0c;需要转义\ String d "hello c"; // hello c&#xff0c;双引号中使用单引号&#xff0c;不需要转义 String e "hello \“c\”"; // hell…...

平衡二叉搜索树之 红黑 树的模拟实现【C++】

文章目录 红黑树的简单介绍定义红黑树的特性红黑树的应用 全部的实现代码放在了文章末尾准备工作包含头文件类的成员变量和红黑树节点的定义 构造函数和拷贝构造swap和赋值运算符重载析构函数findinsert【重要】第一步&#xff1a;按照二叉搜索树的方式插入新节点第二步&#x…...

2:Vue.js 父子组件通信:让你的组件“说话”

上一篇我们聊了如何用 Vue.js 创建一个简单的组件&#xff0c;这次咱们再往前走一步&#xff0c;讲讲 Vue.js 的父子组件通信。组件开发里&#xff0c;最重要的就是让组件之间能够“说话”&#xff0c;数据能流通起来。废话不多说&#xff0c;直接开干&#xff01; 父组件传数据…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学

一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件&#xff0c;其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时&#xff0c;价带电子受激发跃迁至导带&#xff0c;形成电子-空穴对&#xff0c;导致材料电导率显著提升。…...