K8S资源限制之resources

1 资源限制介绍

K8S设计资源限制的原因主要是为了确保集群的稳定运行、防止资源争用和过载,同时提高应用程序的可靠性和性能。资源限制通过Cgroups等机制控制Pod使用节点资源(CPU、内存、存储)。

假设1个节点上有多个pod,其中一个pod使用了所有的资源,那么肯定会影响到到其他pod的运行。

2 resources介绍

resources作用:

  • resources 用于定义容器的计算资源请求和限制。这些资源包括 CPU 和内存。即保证pod有足够的资源使用,但又不会超出限制。

  • 如果没有配置资源限制,pod就会使用宿主机的全部资源。配置了显示的话,pod资源请求超过限制会被K8S杀死或重新调度

关于请求和限制的详细解释

请求(Requests):

  • 请求是容器启动时需要的最低资源量,K8S 会根据请求来调度容器到合适的节点。如果节点上没有足够的资源,容器就无法调度到该节点。那么pod就会处于pending状态。
  • 请求用于确保容器始终有足够的资源可以使用。

限制(Limits):

  • 限制是容器能够使用的最大资源量。如果容器超过限制,K8S 会采取措施限制容器使用的资源(如 CPU 限制时会降低容器的 CPU 使用,内存限制时如果容器超过内存限制则可能会被 OOM Killer(Out Of Memory Killer)杀死)。可以限制防止容器无限制地使用资源,避免影响其他容器和节点上的负载。
  • 资源换算单位
    • cpu:1core = 1000m
    • memary:0.5Mi = 500MB内存

3 resources配置案例

01 request不满足无法完成调度

1.创建1个pod,宿主机是2核,4GB内存。肯定是不满足资源期望的

cat > 04-资源限制之-resources.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:name: stress-resources
spec:containers:- image: registry.cn-hangzhou.aliyuncs.com/wzy01-aliyun/apps:v3name: stressstdin: true# 配置容器的资源限制resources:# 定义资源期望,没有足够资源的话不会调度成功requests:cpu: 16memory: 16G# 配置资源的使用上限limits:cpu: 20memory: 20G
EOF

2.运行后查看事件:kubectl describe pods stress-resources

提示污点存在和内存、CPU不足

Warning FailedScheduling 52s (x3 over 3m16s) default-scheduler 0/3 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn’t tolerate, 2 Insufficient cpu, 2 Insufficient memory.

02 使用超过限制会杀掉进程

stress 是一个用于对 Linux 系统进行压力测试的工具。它可以对 CPU、内存、磁盘 I/O 和网络带宽等各种系统资源进行测试,使用stress模拟性能开销。

1.运行以下配置

cat > cat 01-compute-resources.yaml <<EOF
apiVersion: v1
kind: pod
metadata:name: stress-resources
spec:containers:- image: harbor.zhiyong18.com/zhiyong18-troubleshooting/stress:v0.1name: stressstdin: true# 配置容器的资源限制resources:# 定义资源期望,没有足够资源的话不会调度成功requests:cpu: 200mmemory: 300Mi# 配置资源的使用上限limits:cpu: 0.5memory: 500Mi
EOF

2.查看未压测时的性能指标

[root@worker233~]# docker ps -l
CONTAINER ID   IMAGE                                                   COMMAND     CREATED          STATUS          PORTS     NAMES
07fa36e3d76c   harbor.zhiyong18.com/zhiyong18-troubleshooting/stress   "/bin/sh"   13 seconds ago   Up 12 seconds             k8s_stress_stress-resources_default_6225323f-c599-4f2d-9648-f161dcceafd0_0[root@worker233~]# docker stats 07fa36e3d76c
CONTAINER ID   NAME                                                                         CPU %     MEM USAGE / LIMIT   MEM %     NET I/O   BLOCK I/O   PIDS
07fa36e3d76c   k8s_stress_stress-resources_default_6225323f-c599-4f2d-9648-f161dcceafd0_0   0.00%     232KiB / 500MiB     0.05%     0B / 0B   0B / 0B     1[root@worker233~]# docker exec -it 07fa36e3d76c sh
/usr/local/stress # free -htotal        used        free      shared  buff/cache   available
Mem:           3.8G      571.7M        2.4G        2.6M      806.5M        3.0G
Swap:             0           0           0
/usr/local/stress # 

3.进入pod进行压测。当pod内存资源使用超过限制时,stress进程被杀死。

/usr/local/stress # stress --cpu 8 --io 4 --vm 200 --vm-bytes 256M --timeout 1000s
stress: info: [16] dispatching hogs: 8 cpu, 4 io, 200 vm, 0 hdd
stress: FAIL: [16] (415) <-- worker 228 got signal 9
stress: WARN: [16] (417) now reaping child worker processes
stress: FAIL: [16] (451) failed run completed in 14s
/usr/local/stress # 

: WARN: [16] (417) now reaping child worker processes
stress: FAIL: [16] (451) failed run completed in 14s
/usr/local/stress #


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/758a29b469c64a4094a7cae32334e261.png#pic_center)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 分⽀规范 Git Flow 模型

前言 GitFlow 是一种流行的 Git 分支管理策略&#xff0c;由 Vincent Driessen 在 2010 年提出。它提供了一种结构化的方法来管理项目的开发、发布和维护&#xff0c;特别适合大型和复杂的项目。GitFlow 定义了一套明确的分支模型和工作流程&#xff0c;使得团队成员可以更有效…

任务管理功能拆解——如何高效管理项目任务?

在项目管理中&#xff0c;任务管理功能不仅仅是一个操作工具&#xff0c;它是确保项目按时、高效完成的核心所在。无论是小团队还是跨部门合作&#xff0c;任务管理能够帮助项目经理和团队成员清晰地看到每一项任务的执行情况和进度&#xff0c;从而合理调配资源、优化工作流程…

nodejs入门(1):nodejs的前后端分离

一、引言 我关注nodejs还是从前几年做了的一个电力大数据展示系统开始的&#xff0c;当然&#xff0c;我肯定是很多年的计算机基础的&#xff0c;万变不离其宗。 现在web网站都流行所谓的前后端结构&#xff0c;不知不觉我也开始受到这个影响&#xff0c;以前都是前端直接操作…

集群聊天服务器(13)redis环境安装和发布订阅命令

目录 环境安装订阅redis发布-订阅的客户端编程环境配置客户端编程 功能测试 环境安装 sudo apt-get install redis-server 先启动redis服务 /etc/init.d/redis-server start默认在6379端口上 redis是存键值对的&#xff0c;还可以存链表、数组等等复杂数据结构 而且数据是在…

深入解析大带宽服务器:性能优势与选择指南

一、大带宽服务器是什么&#xff1f; 大带宽服务器指的是具备高网络带宽能力的服务器&#xff0c;通常提供1Gbps、10Gbps甚至更高的网络连接能力。与普通带宽服务器相比&#xff0c;大带宽服务器能够在更短时间内传输大量数据&#xff0c;因此常用于高流量、高并发需求的场景&…

关于Qt C++中connect的几种写法

目录 1. 传统的槽函数写法 2. 使用函数指针的connect写法&#xff08;5.0&#xff09; 3. Lambda表达式作为槽函数&#xff08;C11&#xff09; 4.使用QOverload选择重载信号的写法 这connect函数就像是编程世界里的“茴”字&#xff0c;千变万化&#xff0c;各有千秋。咱们…

常见网络厂商设备默认用户名/密码大全

常见网络厂商的默认用户名/密码 01 思科 (Cisco) 设备类型&#xff1a;路由器、交换机、防火墙、无线控制器 默认用户名&#xff1a;cisco 默认密码&#xff1a;cisco 设备类型&#xff1a;网管型交换机 默认用户名&#xff1a;admin 默认密码&#xff1a;admin 02 华…

elasticsearch是如何实现master选举的?

大家好&#xff0c;我是锋哥。今天分享关于【elasticsearch是如何实现master选举的&#xff1f;】面试题。希望对大家有帮助&#xff1b; elasticsearch是如何实现master选举的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中&…

讯飞、阿里云、腾讯云:Android 语音合成服务对比选择

在 移动端 接入语音合成方面&#xff0c;讯飞和腾讯云等都是优秀的选择&#xff0c;但各有其特点和优势。咱们的需求是需要支持普通话/英语/法语三种语言&#xff0c;以下是对各个平台的详细比较&#xff1a; 一、讯飞语音合成介绍 与语音听写相反&#xff0c;语音合成是将一段…

说说软件工程中的“协程”

在软件工程中&#xff0c;协程&#xff08;coroutine&#xff09;是一种程序运行的方式&#xff0c;可以理解成“协作的线程”或“协作的函数”。以下是对协程的详细解释&#xff1a; 一、协程的基本概念 定义&#xff1a;协程是一组序列化的子过程&#xff0c;用户能像指挥家…

使用 JavaScript 制作 To-Do List

使用 JavaScript 制作 To-Do List 本文记录了使用 HTML、CSS 和 JavaScript 制作一个简单的 To-Do List 网页的全过程&#xff0c;包含功能描述、代码实现以及优化方向。 **&#x1f389;&#x1f389;&#x1f389;欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的…

HarmonyOs鸿蒙开发实战(16)=>沉浸式效果第一种方案一窗口全屏布局方案

1.沉浸式效果的目的 开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感&#xff0c;从而使用户获得最佳的UI体验。 2.窗口全屏布局方案介绍 调整布局系统为全屏布局&#xff0c;界面元素延伸到状态栏和导航条区域实现沉…

【HarmonyOS】鸿蒙系统在租房项目中的项目实战(一)

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…

基于STM32的智能语音识别饮水机系统设计

功能描述 1、给饮水机设定称呼&#xff0c;喊出称呼&#xff0c;饮水机回答&#xff1a;我在 2、语音进行加热功能&#xff0c;说&#xff1a;请加热&#xff0c;加热片运行 3、饮水机水位检测&#xff0c;低于阈值播报“水量少&#xff0c;请换水” 4、检测饮水机水温&#xf…

Java 使用MyBatis-Plus数据操作关键字冲突报错You have an error in your SQL syntax问题

问题 这个报错是出现在Java Spring boot项目中&#xff0c;使用MyBatis-Plus通过创建的实体类对数据库的操作过程中&#xff0c;通过实体创建数据库表是没有问题的&#xff0c;而在接口调用服务类操作数据库的时候&#xff0c;会出现报错。报错详情如下&#xff1a; 服务请求异…

高效工具推荐:基于WebGPU的Whisper Web结合内网穿透远程使用指南

文章目录 前言1.本地部署Whisper Web1.1 安装git1.2 安装Node.js1.3 运行项目 2. Whisper Web使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 公网访问测试6. 配置固定公网地址 前言 OpenAI开源的 Whisper 语音转文本模型效果都说还不错&#xff0c;今天就给大家推荐 GitHub…

力扣-Mysql-3322- 英超积分榜排名 III(中等)

一、题目来源 3322. 英超积分榜排名 III - 力扣&#xff08;LeetCode&#xff09; 二、数据表结构 表&#xff1a;SeasonStats --------------------------- | Column Name | Type | --------------------------- | season_id | int | | team_id …

20241116解决在WIN11和ubuntu20.04通过samba共享时出现局域网千兆带宽拉满的情况

20241116解决在WIN11和ubuntu20.04通过samba共享时出现局域网千兆带宽拉满的情况 2024/11/16 13:42 缘起&#xff1a;最近需要通过iperf3打流&#xff0c;因此在ubuntu20.04服务器上常开sudo nethogs监控流量。 但是发现一个异常&#xff0c;ubuntu20.04服务器上发送的流量过大…

Stable Diffusion最全提示词写法教程

基础书写规则 所有单词都是通过英文书写&#xff0c;单词之间通过, 分割&#xff0c;注意是英文逗号&#xff1b;提示词之间是可以已通过换行书写的&#xff0c;并不会有什么影响&#xff1b;单个提示词的权重是1 , 默认情况下&#xff0c;越往前&#xff0c;权重越大&#xf…

TON商城与Telegram App:生态融合与去中心化未来的精彩碰撞

随着区块链技术的快速发展&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐成为了数字生态的重要组成部分。而Telegram作为全球领先的即时通讯应用&#xff0c;不仅仅满足于传统的社交功能&#xff0c;更在区块链领域大胆探索&#xff0c;推出了基于其去中心化网络的…