K8S资源限制之LimitRange

LimitRange介绍
  • LimitRange也是一种资源,在名称空间内有效;限制同一个名称空间下pod容器的申请资源的最大值,最小值
  • pod的resources中requests和limits必须在这个范围内,否则pod无法创建。当然pod也可以不使用resources进行创建
  • type: 限制对象可以是 ontainer、Pod、PersistentVolumeClaim

应用场景:

  • 开发或测试环境中的所有容器设置统一的资源限制时

  • 当需要防止某个 Pod 占用过多资源影响其他 Pod 运行时

  • 当想要简化资源配置过程,避免每次创建 Pod 时都详细指定资源请求和限制

01 编写limitrange

提示:操作之前确认kube-public名称空间下没有其他相关的资源限制,以避免干扰

1.编写LimitRange资源清单

cat > 01-cpu-memory-min-max.yaml <<EOF
apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-memory-min-max
  namespace: kube-public
spec:
  limits:
    # 容器能设置limit的最大值
  - max:
      cpu: 2
      memory: 4Gi
    # 容器能设置limit的最小值
    min:
      cpu: 200m
      memory: 100Mi
    # 限制的类型是容器
    type: Container
EOF

查看资源限制,虽然没有设置默认值。但是自动设置了默认值。

[root@master231~]# kubectl -n kube-public describe limitranges 
Name:       cpu-memory-min-max
Namespace:  kube-public
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   cpu       200m   2    2                2              -
Container   memory    100Mi  4Gi  4Gi              4Gi            -

2.创建第1个pod。limitrange中限制了CPU的最小值200Mi,pod的CPU资源请求为100Mi,明显低于这个数,因此是不会创建的。

cat > 02-pods.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: pods-nginx
  namespace: kube-public
spec:
  containers:
  - name: web
    image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
    resources:
      requests:
        cpu: 0.1
        memory: 1Gi
      limits:
        cpu: 1
        memory: 2Gi
EOF

kubectl apply -f 02-pods.yaml
Error from server (Forbidden): error when creating “02-pods.yaml”: pods “pods-nginx” is forbidden: minimum cpu usage per Container is 200m, but request is 100m

3.继续创建pod,这次在request中限制内存最大使用为5Gi,超过了limitrange中设置的最大值4Gi。因此也不能创建成功

cat > 03-pods.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: pods-nginx-02
  namespace: kube-public
spec:
  containers:
  - name: web
    image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
    resources:
      requests:
        cpu: 0.5
        memory: 1Gi
      limits:
        cpu: 1
        memory: 5Gi
EOF

kubectl apply -f 03-pods.yaml
Error from server (Forbidden): error when creating “03-pods.yaml”: pods “pods-nginx-02” is forbidden: maximum memory usage per Container is 4Gi, but limit is 5Gi

4.不设置限制的方式创建pod可以成功

cat > 04-pods.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: pods-nginx-04
  namespace: kube-public
spec:
  containers:
  - name: web
    image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
EOF
[root@master231~]# kubectl -n kube-public get pods -o wide 
NAME            READY   STATUS    RESTARTS   AGE   IP               NODE      
pods-nginx-04   1/1     Running   0          18s   10.100.203.155   worker232

在worker232节点使用docker status命令查看其状态

CONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT   MEM %     NET I/O   BLOCK I/O     PIDS
26de8eac876c   k8s_web...     0.00%     8.992MiB / 4GiB     0.22%     0B / 0B   0B / 12.3kB   13

5.这个pod也在范围内,也可以创建成功。

cat > 05-pods.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: pods-nginx-05
  namespace: kube-public
spec:
  containers:
  - name: web
    image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
    resources:
      requests:
        cpu: 0.5
        memory: 1Gi
      limits:
        cpu: 2
        memory: 3Gi
EOF
[root@master231~]# kubectl -n kube-public get pods -o wide | grep pods-nginx-05
pods-nginx-05   1/1     Running   0          104s    10.100.140.93    worker233
02 为pod设置request默认值

1.没有设置默认值,自动使用最大值作为默认值。

[root@master231~]# kubectl describe limits -n kube-public 
Name:       cpu-memory-min-max
Namespace:  kube-public
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   cpu       200m   2    2                2              -
Container   memory    100Mi  4Gi  4Gi              4Gi            -

运行1个资源清单设置默认值

cat > 01-cpu-memory-default.yaml <<EOF
apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-memory-min-max-default
  namespace: kube-public
spec:
  limits:
  - max:
      cpu: 2
      memory: 4Gi
    min:
      cpu: 200m
      memory: 100Mi
    type: Container
    # 设置默认值的Request
    defaultRequest:
      cpu: 200m
      memory: 500Mi
    # 设置默认值的Limit
    default:
      cpu: 1
      memory: 2Gi
EOF

2.查看符合default结果

[root@master231~]# kubectl -n kube-public describe limitranges 
Name:       cpu-memory-min-max
Namespace:  kube-public
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   cpu       200m   2    2                2              -
Container   memory    100Mi  4Gi  4Gi              4Gi            -


Name:       cpu-memory-min-max-default
Namespace:  kube-public
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Container   memory    100Mi  4Gi  500Mi            2Gi            -
Container   cpu       200m   2    200m             1              -

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/919386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Maven maven项目构建的生命周期 Maven安装配置 IDEA 配置 Maven

一&#xff0c;Maven的概述 Maven的作用&#xff1a;专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;提…

Rust “xxx“.to_string()和Rust String::from(“xxx“)区别(将字符串字面量(str类型)转换为String类型)

文章目录 Rust "xxx".to_string()和Rust String::from("xxx")区别1. .to_string()&#xff08;能够将任何可以显示的类型&#xff08;如数字、结构体等&#xff09;转为字符串&#xff09;2. String::from()区别总结&#xff1a;性能&#xff1a;示例对比&…

Windows仿macOS?看这一篇就够了

如果你有任何关于Windows仿macOS的问题&#xff0c;可加入942644281 &#xff08;QQ群&#xff09; Date9.20更新&#xff1a;增加功能按键左移部分Date9.16更新&#xff1a;增加了大多数资源的网盘链接Date9.15更新&#xff1a;增加StartAllBack&#xff0c;资源管理器调整部…

Django数据迁移出错,解决raise NodeNotFoundError问题

错误出现在&#xff1a; raise NodeNotFoundError(self.error_message, self.key, originself.origin) django.db.migrations.exceptions.NodeNotFoundError: Migration myApp.0003_alter_jobinfo_practise dependencies reference nonexistent parent node (myApp, 0002_renam…

PaddleNLP的环境配置:

PaddleNLP的环境配置&#xff1a; conda create -n paddle—test python3.9conda activate paddle—testpython -m pip install paddlepaddle-gpu2.6.1.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html(paddle—test) (venv) PS D:\work\论文写…

【MySQL实战45讲笔记】基础篇——redo log 和 binlog

系列文章 基础篇——MySQL 的基础架构 目录 系列文章1. 重要的日志模块&#xff1a;redo log 和 binlog1.1 redo log1.2 binlog1.3 执行器和 InnoDB 引擎内部如何执行更新语句 1. 重要的日志模块&#xff1a;redo log 和 binlog 前面系统的了解了一个查询语句的执行流程&…

MATLAB常见数学运算函数

MATLAB中含有许多有用的函数,可以随时调用。 a b s abs abs函数 a b s abs abs函数在MATLAB中可以求绝对值,也可以求复数的模长:c e i l ceil ceil函数 向正无穷四舍五入(如果有小数,就向正方向进一)f l o o r floor floor函数 向负无穷四舍五入(如果有小数,就向负方向…

MySQL无开通SQL全审计下的故障分析方法

几年前MySQL数据库出现突然的从库延迟故障和CPU爆高时&#xff0c;如何排查具体原因&#xff0c;可能说已在腾讯云的MySQL库里开启了SQL全审计&#xff0c;记录了全部执行的SQL&#xff0c;再通过下面的方法就可以很容易找到原因&#xff1a; 1&#xff0c;实用QPS和TPS高的高效…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

React(一)

文章目录 项目地址一、创建第一个react项目二、JSX语法2.1 生成列表2.2 大括号识别JS的表达式2.3 列表循环array2.4 条件判断以及假值显示2.5 复杂条件渲染2.6 事件监听和绑定2.7 使用Fregments返回多个根标签2.8 多条件渲染2.9 导出子组件 三、组件3.1 设置组件3.2 props给子组…

微服务安全Spring Security Oauth2实战_spring-security-oauth2-authorization-server

Spring Authorization Server 是什么 Spring Authorization Server 是一个框架&#xff0c;它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上&#xff0c;为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品…

多线程-02-多线程的典型应用(异步调用和提高效率)

一、怎么理解异步和同步 从方法的角度去理解&#xff1a; 需要等待结果返回&#xff0c;才能继续运行就是同步不需要等待结果返回&#xff0c;就能继续运行就是异步 注意&#xff1a;同步在多线程中还有另外一层意思&#xff1a;是让多个线程步调一致。 同步调用 同步调用…

【数据分享】中国汽车工业年鉴(1986-2023)

本年鉴是由工业和信息化部指导&#xff0c;中国汽车技术研究中心有限公司与中国汽车工业协会联合主办。《年鉴》是全面、客观记载中国汽车工业发展与改革历程的重要文献&#xff0c;内容涵盖汽车产业政策、标准、企业、市场以及全国各省市汽车工业发展情况&#xff0c;并调查汇…

Matlab实现北方苍鹰优化算法优化随机森林算法模型 (NGO-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 北方苍鹰优化算法&#xff08;Northern Goshawk Optimization, NGO&#xff09;是一种新颖的群智能优化算法&#xff0c;灵感源自北方苍鹰捕食时的策略。该算法通过模拟苍鹰的搜寻、接近和捕捉猎物的行为模式&am…

CentOS使用中遇到的问题及解决方法

一、CentOS 7网络配置&#xff08;安装后无法联网问题&#xff09; 现象说明 在安装CentOS系统后&#xff0c;有可能出现无法联网的问题&#xff0c;虚拟机中的网络配置并没有问题&#xff0c;而系统却无法联网,也ping不通。 原因描述 CentOS默认开机不启动网络&#xff0c;因…

QT基础 UI编辑器 QT5.12.3环境 C++环境

一、UI编辑器 注意&#xff1a;创建工程时&#xff0c;要勾上界面按钮 UI设计师界面的模块 UI编辑器会在项目构建目录中自动生成一个ui_xxx.h&#xff08;构建一次才能生成代码&#xff09;&#xff0c;来表示ui编辑器界面的代码&#xff0c;属于自动生成的&#xff0c;一定不…

数据分析-Excel基础操作

目录 周报讲解 基础概念 理解数据 筛选excel表 数据透视表 插入数据透视表 新建字段 切片器&#xff08;筛选&#xff09; 数据透视图 Excel常用函数 sum&#xff08;求和&#xff09; 1-8月GMV 1月和8月GMV sumif&#xff08;条件求和&#xff09; sumifs 日G…

OpenCV双目立体视觉重建

本篇文章主要给出使用opencv sgbm重建三维点云的代码&#xff0c;鉴于自身水平所限&#xff0c;如有错误&#xff0c;欢迎批评指正。 环境&#xff1a;vs2015 &#xff0c;opencv3.4.6&#xff0c;pcl1.8.0 原始数据使用D455采集&#xff0c;图像已做完立体校正&#xff0c;如下…

Clip结合Faiss+Flask简易版文搜图服务

一、实现 使用目录结构&#xff1a; templates ---upload.html faiss_app.py 前端代码&#xff1a;upload.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&quo…

Linux驱动开发快速入门——字符设备驱动(直接操作寄存器设备树版)

Linux驱动开发快速入门——字符设备驱动 前言 笔者使用开发板型号&#xff1a;正点原子的IMX6ULL-alpha开发板。ubuntu版本为&#xff1a;20.04。写此文也是以备忘为目的。 字符设备驱动 本小结将以直接操作寄存器的方式控制一个LED灯&#xff0c;可以通过read系统调用可以…