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

CKA 09_Kubernetes工作负载与调度 资源调度 三类QoS request 资源需求 limit 资源限额

文章目录

  • 1. 资源调度
    • 1.1 准备工作
    • 1.2 为什么需要 request 和 limit
    • 1.3 内存限制
      • 1.3.1 Brustable
      • 1.3.2 Guaranteed
      • 1.3.3 BestEffort
      • 1.3.4 当容器申请的资源超出 limit 和 request
    • 1.4 CPU限制

1. 资源调度

1.1 准备工作

  • Kubernetes 采用 requestlimit 两种限制类型来对资源进行分配。
    request(资源需求):即运行 Pod 的节点必须满足运行 Pod 的最基本需求才能运行 Pod 。
    limit(资源限额):即运行 Pod 期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。

  • 资源类型:

    • CPU 的单位是核心数,内存的单位是字节。
      • 一个容器申请 0.5 个CPU,就相当于申请 1 个CPU的一半,你也可以加个后缀 m 表示千分之一的概念。比如说 100m 的CPU,100豪 的 CPU 和 0.1 个 CPU 都是一样的。
    • memory 内存单位:
      • K、M、G、T、P、E #通常是以1000为换算标准的。
      • Ki、Mi、Gi、Ti、Pi、Ei #通常是以1024为换算标准的。
    • ephemeral-storage: 临时存储
    • extended-resource:gpu

1.2 为什么需要 request 和 limit

  • 三类 QoS 及适应场景

    • Guaranteed 敏感型、需要保障的业务
    • Burstable 次敏感型、需要弹性的业务
    • BestEffort 可容忍型业务
  • 不同的 QoS 对调度的影响

    • 调度器使用 request 进行调度
    • CPU 按照 request 划分权重
    • memory 划分 OOMScore
    • BestEffort 会被优先驱离

1.3 内存限制

官方文档:任务 | 配置 Pods 和容器 | 为容器和 Pod 分配内存资源

1.3.1 Brustable

  1. 创建 Pod
  • 该 Pod 中的容器会申请 200M 的内容,并且内存最基本需求是50 MiB,最大不能超过 100MiB
  • 上下文冲突了,所以,在生效时一定会失败
[root@k8s-1 ~]# vim memory-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: memory-demo
spec:containers:- name: memory-demoimage: stressargs:- --vm- "1"- --vm-bytes- 200Mresources:requests:memory: 50Milimits:memory: 100Mi
  1. 生效后,发现 Pod 处于失败的状态
[root@k8s-1 ~]# kubectl apply -f memory-pod.yaml 
pod/memory-demo created
[root@k8s-1 ~]# kubectl get pod

在这里插入图片描述

  1. 查看 Pod 的状态,发现该 Pod 的 QoS 为 Brustable(弹性业务)
[root@k8s-1 ~]# kubectl describe pod memory-demo 
......
QoS Class:                   Burstable
......

在这里插入图片描述

  1. 查看 Pod 的运行日志
kubectl logs memory-demo

在这里插入图片描述

  1. 创建 Pod
  • 该 Pod 限制最少需要 200豪 CPU 和 50MiB 内存,最多不能超过 1 个 CPU 和 100MiB 内存
[root@k8s-1 ~]# vim memory-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: memory-demo
spec:containers:- name: memory-demoimage: nginx#args:#- --vm#- "1"#- --vm-bytes#- 200Mresources:requests:cpu: 200mmemory: 50Milimits:cpu: 1memory: 100Mi
  1. 生效后,Pod 正常运行
[root@k8s-1 ~]# kubectl apply -f memory-pod.yaml 
pod/memory-demo created
[root@k8s-1 ~]# kubectl get pod
NAME          READY   STATUS    RESTARTS   AGE
memory-demo   1/1     Running   0          15s
  1. 查看 Pod 的状态,发现它的 QoS 为 Brustable
[root@k8s-1 ~]# kubectl describe pod memory-demo 

在这里插入图片描述

1.3.2 Guaranteed

  • 当运行重要业务时,使用 Guaranteed
  1. 创建 Pod
  • 将该 Pod 的资源限制 limit 和 request 设置成一样的
[root@k8s-1 ~]# vim memory-pod.yaml 

在这里插入图片描述

  1. 生效后,查看 Pod 的运行状态和状态信息
  • 发现 Pod 的 QoS 是 Guaranteed(敏感型、需要保障的业务)
    在这里插入图片描述

1.3.3 BestEffort

  1. 创建 Pod
  • limit 和 request 都不设置
[root@k8s-1 ~]# vim memory-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: memory-demo
spec:containers:- name: memory-demoimage: nginx#args:#- --vm#- "1"#- --vm-bytes#- 200M#resources:#  requests:#    cpu: 200m#    memory: 50Mi#  limits:#    cpu: 1#    memory: 100Mi
  1. 生效后,查看 Pod 的运行状态和状态信息
  • 发现 Pod 的 QoS 为 BestEffort(可容忍型业务
  • 当资源不够时,为保证集群节点的运行状态,会驱离该 Pod,因为 BestEffort 的优先级很低
[root@k8s-1 ~]# kubectl get pod
NAME          READY   STATUS    RESTARTS   AGE
memory-demo   1/1     Running   0          16s
[root@k8s-1 ~]# kubectl describe pod memory-demo 

在这里插入图片描述

1.3.4 当容器申请的资源超出 limit 和 request

  1. 创建 Pod
  • 该 Pod 申请 1G 的内存资源,但是限制其最多最少只能使用 500M 内存
  • 所以,在生效后,这个 Pod 一定是失败的
[root@k8s-1 ~]# vim memory-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: memory-demo
spec:containers:- name: memory-demoimage: stressargs:- --vm- "1"- --vm-bytes- 1Gi				//和 Guaranteed 不同的是,该 Pod 申请了资源。resources:requests:memory: 500Milimits:memory: 500Mi
  1. 生效后,发现 Pod 失败

在这里插入图片描述

1.4 CPU限制

官方文档: 任务 | 配置 Pods 和容器 | 为容器和 Pod 分配 CPU 资源

  1. 先查看主机的 CPU 信息
  • 当前主机是 2 个 核
[root@k8s-1 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             2
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 94
Model name:            Intel Core Processor (Skylake, IBRS)
Stepping:              3
CPU MHz:               2304.000
BogoMIPS:              4608.00
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
L3 cache:              16384K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat umip spec_ctrl intel_stibp arch_capabilities
  1. 创建 Pod
  • 该 Pod 申请 2 个 CPU,资源限制最少 5 个 CPU,最多不能超过 10 个 CPU
[root@k8s-1 ~]# cp memory-pod.yaml cpu.yaml
[root@k8s-1 ~]# vim cpu.yaml 
apiVersion: v1
kind: Pod
metadata:name: cpu-demo
spec:containers:- name: cpu-demoimage: stressresources:limits:cpu: "10"requests:cpu: "5"args:- -c- "2"
  1. 生效后,查看 Pod 运行状态和状态信息
  • 发现 Pod 处于 Pending 状态
  • 调度器主要查看的是 request 的限制,request 设置最少不能低于 5 个 CPU,但是主机只有 2 个CPU,所以,调度失败
[root@k8s-1 ~]# kubectl get pod
NAME       READY   STATUS    RESTARTS   AGE
cpu-demo   0/1     Pending   0          5s
  • 该 Pod 也一直被 kubelet 重启,但是,发现集群的 3 个节点都无法提高 5 个 CPU ,所以,Pod 自始至终都是 Pending 的状态
[root@k8s-1 ~]# kubectl describe pod cpu-demo 

在这里插入图片描述

相关文章:

CKA 09_Kubernetes工作负载与调度 资源调度 三类QoS request 资源需求 limit 资源限额

文章目录 1. 资源调度1.1 准备工作1.2 为什么需要 request 和 limit1.3 内存限制1.3.1 Brustable1.3.2 Guaranteed1.3.3 BestEffort1.3.4 当容器申请的资源超出 limit 和 request 1.4 CPU限制 1. 资源调度 1.1 准备工作 Kubernetes 采用 request 和 limit 两种限制类型来对资源…...

【pytorch】维度变换

【pytorch】维度变换 View操作unSqueeze操作图片处理的一个案例squeeze 维度删减操作维度扩展-expand维度扩展-repeat矩阵的转置操作-transpose View操作 将一个四维的张量(b x c x h x w)转换成一个二维的张量 对于四张图片 将每一张图像用一行向量进…...

vue3中的nextTick()

目录 nextTick() 方法用法回调函数方式使用await方式使用 实现原理使用nextTick() 方法时的注意事项 nextTick() 方法 nextTick() 方法是一个非常强大的工具,是一个等待下一次 DOM 更新刷新的工具方法。用于将一个函数以异步的方式推迟到下一个 DOM 更新周期执行。…...

高效学习传感器|霍尔式传感器

01、霍尔式传感器的工作原理 1●霍尔效应 霍尔式传感器的物理基础是霍尔效应。如图1所示,在一块长度为l、宽度为b、厚度为d的长方体导电板上,左、右、前、后侧面都安装上电极。在长度方向上通入电流I,在厚度方向施加磁感应强度为B的磁场。 ■…...

2023年前端面试高频考点HTML5+CSS3

目录 浏览器的渲染过程⭐⭐⭐ CSS 、JS 阻塞 DOM 解析和渲染 回流(重排)和重绘⭐⭐ 选择器 ID选择器、类选择器、标签选择器(按优先级高到低排序)⭐⭐ 特殊符号选择器(>,,~,空格&#xff0…...

企业开源测试项目实战(附全套实战项目教程+视频+源码)

接口测试项目 1. No matching distribution found for itypes1.1.0 Could not find a version that satisfies the requirement itypes1.1.0 (from -r requirements.txt (line 8)) (from versions: ) No matching distribution found for itypes1.1.0 (from -r requirements.…...

信创办公–基于WPS的EXCEL最佳实践系列 (创建表格)

信创办公–基于WPS的EXCEL最佳实践系列 (创建表格) 目录 应用背景操作步骤1、新建空白工作簿并命名为“奖牌榜”2、使用模板新建工作簿3、新增一张工作表,并将工作簿的标签更改为红色4、复制与隐藏工作表5、添加工作簿属性值6、更改工作簿主题…...

四、HAL_驱动机械按键

1、开发环境。 (1)KeilMDK:V5.38.0.0 (2)STM32CubeMX:V6.8.1 (3)MCU:STM32F407ZGT6 2、机械按键简介 (1)按键内部是机械结构,也就是内部是没有电路的。按键按下内部引脚导通,松开内部断开。 3、实验目的&原理…...

机器学习实战六步法之数据收集方法(四)

要落地一个机器学习的项目,是有章可循的,通过这六个步骤,小白也能搞定机器学习。 看我闪电六连鞭!🤣 数据收集 数据是机器学习的基础,没有数据一切都是空谈!数据集的数据量和数据的质量往往决…...

神经网络:CNN中的filter,kernel_size,strides,padding对输出形状的影响

输入数据在经过卷积层后,形状一般会发生改变,而形状的变化往往与以下四个超参数有关。 1,filter(out_channel) 该超参数控制着输入数据经过卷积层中需要与几个卷积核进行运算,而输入数据与每个卷积核进行…...

Spring Boot集成Redisson布隆过滤器案例

1 什么是布隆过滤器 布隆过滤器实际上是一个非常长的二进制向量(bitmap)和一系列随机哈希函数。那什么又叫哈希函数呢?哈希函数指将哈希表中元素的关键键值通过一定的函数关系映射为元素存储位置的函数。(HashMap源码) 布隆过滤器的优点&…...

使用 VSCode SSH 公网远程连接本地服务器开发 - cpolar内网穿透

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…...

portraiture宿主插件最新v4中文版本下载及使用教程

自拍怎么可以不修图呢?如果要修图的话,磨皮就是其中非常重要的一环。皮肤看起来细腻光滑了,整个人的颜值都会瞬间拉高。下面就让我们介绍一下磨皮用什么软件好用,什么软件可以手动磨皮的相关内容。portraiture是ps人像修图中常用的…...

一. ATR技术指标的定义与运用

一. ATR的定义 1. 什么是ATR ATR英文全名是Average true range,翻译过来就是平均真实波幅,这个指标主要用来衡量最近N天TR(真实波幅)的平均值。 2. ATR相关计算公式 T R [ ( 最高价 − 最低价 ) , ( 前一次收盘价 − 最高价 ) &#xff0…...

linux find帮助文档

以下是完整的find命令帮助文档: 用法:find [-H] [-L] [-P] [-D debugopts] [-Olevel] [起始路径…] [表达式] 选项: -H 跟随命令行符号链接 -L 跟随所有符号链接 -P 不跟随任何符号链接(默认) -D debugopts 调试标志…...

搜索与图论(acwing算法基础)

文章目录 DFS排列数字n皇后 BFS走迷宫 拓扑序列单链表树与图的深度优先搜索模拟队列有向图的拓扑序列 bellman-ford有边数限制的最短路 spfaspfa求最短路spfa判断负环 FloydFloyd求最短路 PrimPrim算法求最小生成树 KruskalKruskal算法求最小生成树 染色法判定二分图染色法判定…...

【数据结构】何为数据结构。

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…...

【P57】JMeter 保存响应到文件(Save Responses to a file)

文章目录 一、保存响应到文件(Save Responses to a file)参数说明二、准备工作三、测试计划设计 一、保存响应到文件(Save Responses to a file)参数说明 可以将结果树保存到文件 使用场景:当结果太大,使…...

Visual Studio 2022 v17.6 正式发布

Visual Studio 17.6 正式发布,这个最新版本提供了一系列强大的工具和功能,旨在使你能够制作出最先进的应用程序。 提高生产力 通过 Visual Studio 2022,目标是帮助你在更短的时间内完成 IDE 内的所有开发任务,在这个版本中&…...

std::chrono时间处理

std::chrono是C11引入的标准库,用于时间的计算和处理。它按照ISO8601标准定义了多个时间类,例如:duration(持续时间)、time_point(时间点)和clock(时钟)。以下是一些常见…...

ieda codeformatV2.xml

ieda codeformatV2.xml 目录概述需求: 设计思路实现思路分析1.codeformatV22.codeformatV23.codeformatV24.codeformatV25.数据处理器 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&…...

Hbase

java客户端 导入maven依赖 XML<dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency>…...

[golang 微服务] 5. 微服务服务发现介绍,安装以及consul的使用,Consul集群

一.服务发现介绍 引入 上一节讲解了使用 gRPC创建微服务,客户端的一个接口可能需要调用 N个服务,而不同服务可能存在 不同的服务器,这时&#xff0c;客户端就必须知道所有服务的 网络位置&#xff08;ipport&#xff09;&#xff0c;来进行连接服务器操作,如下图所示: 以往的做…...

【数据结构】哈希应用

目录 一、位图 1、位图概念 2、位图实现 2.1、位图结构 2.2、比特位置1 2.3、比特位置0 2.4、检测位图中比特位 3、位图例题 3.1、找到只出现一次的整数 3.2、找到两个文件交集 3.3、找到出现次数不超过2次的所有整数 二、布隆过滤器 1、布隆过滤器提出 2、布隆过…...

【 Python 全栈开发 - WEB开发篇 - 31 】where条件查询

文章目录 一、where条件查询1.关系运算符查询2.IN关键字查询3.BETWEEN AND关键字查询4.空值查询5.AND关键字查询6.OR关键字查询7.LIKE关键字查询普通字符串含有%通配的字符串含有_通配的字符串 一、where条件查询 MySQL 的 where 条件查询是指在查询数据时&#xff0c;通过 wh…...

Android系统的Ashmem匿名共享内存子系统分析(5)- 实现共享的原理

声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法&#xff0c;记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的&#xff0c;但因为我个人问题没能实施这个计划&#xff0c;留下些许遗憾…文中参考了很多书籍及博客内容&#xff0c;可能涉及的比较…...

谈一谈冷门的C语言爬虫

C语言可以用来编写爬虫程序&#xff0c;但是相对于其他编程语言&#xff0c;C语言的爬虫开发可能会更加复杂和繁琐。因为C语言本身并没有提供现成的爬虫框架和库&#xff0c;需要自己编写网络请求、HTML解析等功能。 不过&#xff0c;如果你对C语言比较熟悉&#xff0c;也可以…...

基于状态的维护(CBM)如何推动设备效率提高?

基于状态的维护&#xff08;Condition-Based Maintenance&#xff0c;CBM&#xff09;是一种先进的维护策略&#xff0c;通过实时监测和分析设备的状态数据&#xff0c;预测设备故障并采取相应的维护措施。CBM基于数据驱动的方法&#xff0c;能够提高设备的可用性、降低维修成本…...

DC LAB8SDC约束四种时序路径分析

DC LAB 1.启动DC2.读入设计3. 查看所有违例的约束报告3.1 report_constraint -all_violators (alias rc)3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告) 4.查看时序报告 report_timing -significant_digits 45. 约束组合逻辑(adr_i…...

学生考试作弊检测系统 yolov8

学生考试作弊检测系统采用yolov8网络模型人工智能技术&#xff0c;学生考试作弊检测系统过在考场中安装监控设备&#xff0c;对学生的作弊行为进行实时监测。当学生出现作弊行为时&#xff0c;学生考试作弊检测系统将自动识别并记录信息。YOLOv8 算法的核心特性和改动可以归结为…...

wordpress入门教程(视频)/百度推广外推联系方式

AVR c语言优秀编程风格作为一个初学者如何具有良好的程序设计风格呢&#xff1f;我想引用一个关于初学者请教编程大师的故事让读者自己去领悟。有一位编程大师&#xff0c;他写非结构化的程序&#xff0c;一位初学者刻意模仿他&#xff0c;也写非结构化的程序。当他让大师看他的…...

如何建论坛网站/网络营销与推广

在之前的 dubbo 源码分析中我们分析了 dubbo 的服务暴露。provider 把需要暴露的服务地址信息注册到注册中心(比如:zookeeper)&#xff0c;然后把通过 java nio 框架 netty 以 socket 的方式把远程服务暴露给 consumer 调用&#xff0c;并且订阅注解中心&#xff0c;当注册中心…...

手机网站建设价格低/找百度

问题描述 我的Emacs使用了Purcell的配置&#xff0c;在其配置中使用了whitespace-cleanup&#xff0c;且通过在.emacs.d/lisp/init-edit-utils.el中设定&#xff1a; (require whitespace-cleanup-mode) (global-whitespace-cleanup-mode t)这样设定后&#xff0c;默认会全局使…...

网站后台登录界面下载/网站首页模板

English tutorial has been published.You can see here http://codeforces.com/blog/entry/5160 【A k-String】 http://www.codeforces.com/contest/219/problem/A 题目大意&#xff1a;给你一堆字母&#xff0c;问用这些字母能不能组成一个由某个循环节循环k次得到的字符串。…...

seo神马网站推广器/湛江seo

如果要问时下最火的综艺节目是什么&#xff1f;《乘风破浪的姐姐》当仁不让要坐头把交椅。节目还未播出就因为姐姐们自带热点的体质而吊足了大众的胃口。 又名&#xff1a;《兴风破浪的姑奶奶》 节目上线之前&#xff0c;吊足了观众的胃口&#xff0c;待节目一上线&#xff0…...

禁止wordpress网站上传图片时自动生成三张图片方法/百度手机seo软件

AUTOSAR_EXP_PlatformDesign - 10 Persistency 【translated by sky8336, 2019.06.09, Shanghai】 10 Persistency 10.1Overview 持久性为自适应平台的应用程序和其他功能集群提供了在自适应机器的非易失性内存中存储信息的机制。数据在启动和点火周期是可获得的。持久性提…...