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

Kubernetes资源配额实战:LimitRange配置指南

1 基本介绍

官方网址:https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/policy-resources/limit-range-v1/

作用:LimitRange 设置名字空间中每个资源类别的资源用量限制。

2 配置Limitrange资源配额的最大值及最小值

2.1 LimitRange资源清单

## LimitRange资源清单
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# cat 01-dinginx-limitrange.yaml 
apiVersion: v1
kind: Namespace
metadata:name: dinginx-project
---
apiVersion: v1
kind: LimitRange
metadata:name: limitrange-defaultnamespace: dinginx-project
spec:limits:#限制容器的最大资源配额- max:cpu: 2memory: 4Gi# #限制容器的最小资源配额min:cpu: 200mmemory: "200Mi"type: Container#创建资源并查看
[root@k8s-master01 /data/manifests/project]# kubectl apply -f dinginx-limitrange.yaml 
[root@k8s-master01 /data/manifests/project]# kubectl -n dinginx-project describe limitranges
Name:       limitrange-default
Namespace:  dinginx-project
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   cpu       200m   2    2                2              -
Container   memory    200Mi  4Gi  4Gi              4Gi            -#默认使用limitrange配置的最大资源

2.2 验证大于cpu最大配额deploy资源

2.2.1 创建测试deploy资源

#创建测试deploy资源
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# cat 02-limitrange-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: dinginx-limitrangenamespace: dinginx-project
spec:replicas: 1selector:matchLabels:app: dinginxtemplate:metadata:labels:app: dinginxspec:containers:- image: harbor.dinginx.org/dinginx/app-dinginx:v1name: dinginx-limitrange-podsresources:requests:cpu: 3  # 注意 CPU 请求单位memory: "200Mi"  # 内存请求limits:cpu: "1"  # CPU 限制memory: "2Gi"  # 内存限制restartPolicy: Always[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl apply -f 02-limitrange-deploy.yaml 
The Deployment "dinginx-limitrange" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "3": must be less than or equal to cpu limit of 1

2.2.2 大于limit最大值memory资源配额

#测试资源清单文件
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# cat 02-limitrange-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: dinginx-limitrangenamespace: dinginx-project
spec:replicas: 1selector:matchLabels:app: dinginxtemplate:metadata:labels:app: dinginxspec:containers:- image: harbor.dinginx.org/dinginx/app-dinginx:v1name: dinginx-limitrange-podsresources:requests:cpu: "200m"  # 注意 CPU 请求单位memory: "200Mi"  # 内存请求limits:cpu: "1"  # CPU 限制#测试大于limit值配额memory: "6Gi"  # 内存限制restartPolicy: Always#无法创建pod
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl get deploy,pods -n dinginx-project 
NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/dinginx-limitrange   0/1     0            0           9m18s  #pod因资源限制无法创建#修改为正常范围内配额
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# cat 02-limitrange-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
#...spec:containers:- image: harbor.dinginx.org/dinginx/app-dinginx:v1name: dinginx-limitrange-podsresources:requests:cpu: "200m"  # 注意 CPU 请求单位memory: "200Mi"  # 内存请求limits:cpu: "2"  # CPU 限制memory: "3Gi"  # 内存限制restartPolicy: Always
#...

2.2.3 修改为正常值

##再次创建,pod创建成功
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl apply -f 02-limitrange-deploy.yaml 
deployment.apps/dinginx-limitrange configured
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl -n dinginx-project get pods
NAME                                  READY   STATUS    RESTARTS   AGE
dinginx-limitrange-787c5964bc-qspd9   1/1     Running   0          5s

2.2.4 不设置resources字段测试

[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# vim 02-limitrange-deploy.yaml apiVersion: apps/v1
kind: Deployment
metadata:name: dinginx-limitrangenamespace: dinginx-project
spec:replicas: 1selector:matchLabels:app: dinginxtemplate:metadata:labels:app: dinginxspec:containers:- image: harbor.dinginx.org/dinginx/app-dinginx:v1name: dinginx-limitrange-podsrestartPolicy: Always#创建资源并验证
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl -n dinginx-project get pods -owide
NAME                                  READY   STATUS    RESTARTS   AGE   IP            NODE                     NOMINATED NODE   READINESS GATES
dinginx-limitrange-678fc88765-fkx5d   1/1     Running   0          9s    10.244.2.99   k8s-node02.dinginx.org   <none>           <none>[root@k8s-node02 ~]# docker ps -l
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
bca608447a80   b71dcd634698   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes             k8s_dinginx-limitrange-pods_dinginx-limitrange-678fc88765-fkx5d_dinginx-project_6e481c74-b750-4639-9fa2-9b51a8df5d49_0
[root@k8s-node02 ~]#       
#默认会使用limitrang最大配额
[root@k8s-node02 ~]# docker stats bca608447a80
CONTAINER ID   NAME 
CPU %     MEM USAGE / LIMIT   MEM %     NET I/O   BLOCK I/O     PIDS bca608447a80   k8s_dinginx-limitrange-pods_dinginx-limitrange-678fc88765-fkx5d_dinginx-project_6e481c74-b750-4639-9fa2-9b51a8df5d49_0   0.00%     3.227MiB / 4GiB     0.08%     0B / 0B   0B / 12.3kB   3 

3 设置默认的计算资源配额

3.1 limitrange设置默认配额并创建资源

#limitrange设置默认配额
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# cat 01-dinginx-limitrange.yaml 
apiVersion: v1
kind: Namespace
metadata:name: dinginx-project
---
apiVersion: v1
kind: LimitRange
metadata:name: limitrange-defaultnamespace: dinginx-project
spec:limits:- max:cpu: 1memory: 4Gimin:cpu: 200mmemory: "200Mi"default:cpu: "500m"   # 所有容器的默认 CPU 限制为 500 毫核memory: "2Gi" # 所有容器的默认内存限制为 2 GidefaultRequest:cpu: "250m"       # 所有容器的默认 CPU 请求为 250 毫核memory: "250Mi"   # 所有容器的默认内存请求为 128 Mitype: Container      # 资源限制的类型为容器#创建 资源并验证
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl -n dinginx-project get limitranges 
NAME                 CREATED AT
limitrange-default   2026-01-24T15:31:07Z
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl -n dinginx-project describe limitranges 
Name:       limitrange-default
Namespace:  dinginx-project
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   memory    200Mi  4Gi  250Mi            2Gi            -
Container   cpu       200m   1    250m             500m           -

3.2 创建deploy资源清单并验证

#创建deploy资源清单
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# cat 02-limitrange-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: dinginx-limitrangenamespace: dinginx-project
spec:replicas: 1selector:matchLabels:app: dinginxtemplate:metadata:labels:app: dinginxspec:containers:- image: harbor.dinginx.org/dinginx/app-dinginx:v1name: dinginx-limitrange-pods#resources:#  requests:#    cpu: "200m"  # 注意 CPU 请求单位#    memory: "200Mi"  # 内存请求#  limits:#    cpu: "2"  # CPU 限制#    #测试大于最小值limitrange配额#    memory: "3Gi"  # 内存限制restartPolicy: Always#创建资源并验证
[root@k8s-master01 /data/manifests/project/03-dinginx-limitrange]# kubectl get pods -n dinginx-project -owide
NAME                                  READY   STATUS    RESTARTS   AGE     IP             NODE                     NOMINATED NODE   READINESS GATES
dinginx-limitrange-678fc88765-fbmpt   1/1     Running   0          8m40s   10.244.2.100   k8s-node02.dinginx.org   <none>           <none>#到被调度的节点查看资源,和limitrange默认配额一致
[root@k8s-node02 ~]# docker ps -l
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
2b217fae91cf   b71dcd634698   "/docker-entrypoint.…"   9 minutes ago   Up 9 minutes             k8s_dinginx-limitrange-pods_dinginx-limitrange-678fc88765-fbmpt_dinginx-project_334b727f-5f04-4ea2-9cd6-204a5755c5f1_0
[root@k8s-node02 ~]# docker stats 2b217fae91cf
CONTAINER ID   NAME                                                                                                                     CPU %     MEM USAGE / LIMIT   MEM %     NET I/O   BLOCK I/O     PIDS 2b217fae91cf   k8s_dinginx-limitrange-pods_dinginx-limitrange-2b217fae91cf-skdj2_dinginx-project_d7eb4d07-2206-4991-bdc7-ac56d7206dde_0   0.00%     3.23MiB / 2GiB      0.16%     0B / 0B   0B / 12.3kB   3 
http://www.jsqmd.com/news/661874/

相关文章:

  • PINN实战:从零构建一个偏微分方程求解器
  • 海洋CMS资源接口实战:XML数据格式与API调用详解
  • STM32 FOC电机库PID调参避坑指南:为什么你的定点参数调不好?
  • 邢台脱发白发理疗养发馆哪家好?黑奥秘参与行业标准制定,专业有据可依 - 美业信息观察
  • AMD平台ESXI 7.0实战:避坑部署Win11与TrueNAS虚拟化存储方案
  • Flask-Admin进阶指南:从基础增删改查到自定义视图和权限控制的完整配置流程
  • 从入门到实战:在UniApp中高效集成uCharts图表(组件与原生双模式详解)
  • 大模型应用开发实战(19)——Andrej Karpathy Skills 为什么突然火了?一份 CLAUDE.md,把 Claude Code 从“会写”拉回“会做事”
  • 2026年团鱼脚鱼甲鱼养殖基地推荐:中华鳖老鳖水鱼专业供应与回收服务选型指南 - 品牌推荐官
  • ContextMenuManager:Windows右键菜单终极解决方案,3个核心功能重塑你的操作效率
  • 别再傻傻地直接扫了!手把手教你用wafw00f在Windows和Kali上优雅地“试探”网站防火墙
  • Intel RealSense D435i数据采集避坑指南:Python脚本获取相机内参、外参并同步保存多传感器图像
  • TMSpeech:Windows本地实时语音识别工具终极配置指南
  • 2026年台式净饮机推荐:碧云泉G7S万相凭实力问鼎年度榜首 - 品牌企业推荐师(官方)
  • 设计模式系列目录
  • 如何用Open-Lyrics实现AI字幕生成与语音翻译:3步完成多语言转换
  • Mysql--基础知识点--101--在线扩容
  • 给企业开发者的MFI指南:当你的App需要连接Honeywell扫描枪时,info.plist和PPID该怎么填?
  • Infinity图像合成实战:如何用比特级建模提升你的AI画质(附GitHub代码)
  • 【技术解析】SwAV:用在线聚类与最优运输破解无监督视觉特征学习难题
  • 考不上高中怎么办,上海华科学校铸就别样精彩 - 品牌企业推荐师(官方)
  • 别再手动传数据了!用MatrikonOPC连接Matlab和NX MCD,实现自动化联合仿真
  • 远程生理信号监测终极指南:rPPG框架的完整实践教程
  • MOTR:基于Transformer的端到端多目标跟踪框架深度剖析
  • 仅限首批200家企业的AGI治理合规工具包泄露(源自2026奇点大会技术委员会内部推演)
  • ESP32 UI美化秘籍:手把手教你从阿里图标库(iconfont)扒图标,集成到LVGL界面里
  • ESP32的GPIO不够用?手把手教你用I2C和PCA9557扩展8个IO(附完整代码)
  • Wan2.2-I2V-A14B效果对比评测:YOLOv11目标检测框引导下的精准视频生成
  • 2026年西安上门安装空调/中央空调维修公司推荐:陕西创翔建达建筑工程有限公司,提供空调安装、移机、维修等多类服务 - 品牌推荐官
  • 3个步骤实现iOS 15-16激活限制解除:applera1n完整实用指南