K8S之资源管理

        关于资源管理,我们会从计算机资源管理(Computer Resources)、服务质量管理(Qos)、资源配额管理(LimitRange、ResourceQuota)等方面来进行说明

        Kubernetes集群里的节点提供的资源主要是计算机资源,计算机资源是可计量的能被申请、分配和使用的基础资源,这使之区别于API资源(API Resources,例如Pod和Services等)。当前计算机资源主要包括CPU、GPU及Memory,重点介绍CPU和Memory资源管理,GPU除非是一些需要用到算力的服务,否则对这个GPU性能需求不大。

        场景:我们在之前的实验中是没有对CPU和Memory进行定义的,yaml文件如下:

[root@k8s-master k8s-yaml]# cat nginx-deployment.yaml 
apiVersion : apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas: 2template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80

        这样的话,Kubernetes会认为该Pod所需要的资源很少,可以调度到任何可用的Node,这样一来,当集群中的计算机资源不是很充足的时候,例如集群的Pod负载突然增大,就会使得某得节点的资源严重不足。此时,为了避免系统挂掉,该节点会杀掉某些用户进程来释放资源,避免操作系统崩溃,加入系统崩溃的话,所有的Pod也会被牺牲掉,所以Kubernetes有自己的一套资源配额限制以及对应的Pod服务等级机制。

        1.可以全面的限制一个应用及其中的Pod所能占用的资源配额。

            (1)定义每个Pod上资源配额相关的参数,比如CPU/Memory Request/Limit;

            (2)自动为每个没有定义资源配额的Pod添加资源配额模版(LimitRange);

            (3)从总量上限制一个租户(Namespace层级)或者应用所能使用的资源配额的ResourceQuota。

        2.允许集群的资源被超额分配,以提高集群的资源利用率,同时允许用户根据业务的优先级,为不同的Pod定义相应的保障等级(QoS),Qos就是Pod生存的优先级,当系统资源不足的时候,低等级的Pod会被优先干掉,以确保高等级的Pod稳定运行。

        一个程序所使用的CPU和Memory是一个动态的量,会根据负载情况变化,因此最准确的说法是,某个进程的CPU使用量为0.1个CPU(Request)~1个CPU(Limit),内存占用则为500MB(Request)~1GB(Limit)。对应到Pod容器上,就是如下的4个参数:

        spec.container[].resources.requests . cpu:容器初始要求的CPU数量
        spec.container[].resources.limits.cpu:容器所能使用最大的CPU数量
        spec.container[].resources.requests.memory:容器初始要求的内存大小
        spec.container[].esources.limits.memory:容器所能使用最大的内存大小

其中,limit是对应资源上限,最多允许使用这么大的资源,由于CPU的资源是可压缩的,进程无论如何都不可能突破上限,因此设置起来比较容易。对于Memory这种不可压缩的资源,它的Limit值设置起来就有点复杂,如果设置得小了,则进程在业务繁忙期视图请求超过Limit限制的Memory值时,会被操作系统kill掉,因此,Memory额Request和Limit值需要结合进程实际的需求,或者结合压测结果来谨慎设置。例如:

        Pod A 的 Memory Request 袚设置为 1GB, Node A 当时空闲的 Memory 为 1.2GB, 符合 Pod A 的需求,因此 Pod A 被调度到 Node A 上 。 运行 3 天后, Pod A 的访问讨求大增,内存需要增加到 1.5GB, 此时 Node A 的剩余内存只有 200MB, 由于 Pod A 新增的内存已经超出系统资源范围,所以 Pod A 在这种情况下会被 Kubernetes“ 杀掉" 。
        没有设置Limit的Pod ,或者只设置了CPU Limit或者Memory Limit两者之一的Pod,看起来都是很有弹性的,但实际上,与4个参数都被设置了的Pod相比,它们处于一种不稳定状态,只是稳定一点儿而已。理解了这一点,就很容易理解Resource QoS问题了。如果我们有成百上千个不同的 Pod, 那么先手动设置每个Pod的这4个参数,再检查并确保这些参数的设置,都是合理的。比如不能出现内存超过2GB或者CPU占据两个核心的Pod。最后还得手工检查不同租户(命名空间)下的 Pod 资源使用量是否超过限额 。为此, Kubernetes 提供了另外两个相关对象:LimitRange及ResourceQuota, 前者解决了没有设置配额参数的Pod的默认资源配额问题,同时是Pod资源配额设置的合法性校验参考;后者则约束租户的资源总量配额问题。

        后面我们会分别从计算机资源管理(Computer Resources)、服务质量管理(Qos)、资源配额管理(LimitRange、ResourceQuota)来分析。
       


 

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

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

相关文章

ChatGPT与学术论文:提升写作效率的最佳工具

ChatGPT无限次数:点击直达 ChatGPT与学术论文:提升写作效率的最佳工具 在当今信息爆炸的时代,如何高效地撰写学术论文成为许多学术写作者面临的挑战之一。随着人工智能技术的发展,ChatGPT成为了一个极具潜力的工具,能够帮助写作者…

Node.js环境WebSocket示例

server.js: const WebSocket require(ws);const wss new WebSocket.Server({ port: 3000 });wss.on(connection, function connection(ws) {console.log(客户端已连接);ws.on(message, function incoming(message) {console.log(收到客户端消息:, message);ws.se…

Kali安全

基础配置 $ ip a s # 查看网络IP地址,本例中查看到的是192.168.88.40 $ sudo systemctl start ssh # 启ssh服务,弹出的窗口输入密码kali $ sudo systemctl enable ssh # 设置ssh服务开机自启 [rootmyhost ~]# ssh kali192.168.88.40 nmap…

SuperGluePretrainedNetwork调用接口版本(两个版本!)

本脚本是一个基于Python的应用,旨在演示如何使用SuperGlue算法进行图像之间的特征匹配。SuperGlue是一个强大的特征匹配工具,能够在不同的图像之间找到对应的关键点。这个工具尤其适用于计算机视觉任务,如立体视觉、图像拼接、对象识别和追踪…

0基础刷图论最短路 2(从ATcoder 0分到1800分)

AT最短路刷题2(本文难度rated 1000~ 1200) 题目来源:Atcoder 题目收集: https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path (里面按tag分类好了Atcoder的所有题目,类似cf) &#x…

RN封装三角形组件(只支持上下箭头)

import React from react; import { View, StyleSheet } from react-native;const Triangle ({ direction, width, height, color }) > {// 根据方向选择三角形的样式const triangleStyle direction up? {borderTopWidth: 0,borderBottomWidth: height,borderLeftWidth: …

docker完美安装分布式任务调度平台XXL-JOB

分布式任务调度平台XXL-JOB 1、官方文档 自己看 https://www.xuxueli.com/xxl-job/#1.1%20%E6%A6%82%E8%BF%B0 2、使用docker部署 本人使用的腾讯云,安装docker暴露一下端口,就很舒服的安装这个服务了。 docker pull xuxueli/xxl-job-admin:2.4.03…

Harmony鸿蒙南向驱动开发-PIN接口使用

功能简介 PIN即管脚控制器,用于统一管理各SoC的管脚资源,对外提供管脚复用功能:包括管脚推拉方式、管脚推拉强度以及管脚功能。 PIN接口定义了操作PIN管脚的通用方法集合,包括: 获取/释放管脚描述句柄:传…

代码随想录算法训练营第三十七天|● 738.单调递增的数字 ● 968.监控二叉树

738.单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string a to_string(n);int k 0;for (int i a.size() - 1; i > 0; i--) {if (a[i] < a[i - 1]) {k i;a[i-1]--;}}cout << k << endl;if (k ! 0){for (int i a.size…

c# Xml 和 Json 转换方法记录

c# xml 转 json 在C#中&#xff0c;可以使用下面几种方法将XML转换为JSON&#xff1a; 使用Newtonsoft.Json库&#xff1a; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.Xml;// 从XML字符串转换为JSON字符串 string …

安卓手机APP开发的媒体相关内容播放列表

安卓手机APP开发的媒体相关内容播放列表 目录 概述 修改播放列表 查询播放列表 重复模式 随机模式 设置一个定制的随机顺序 标识播放列表中的媒体项 把APP数据和播放列表媒体项关联起来

好玩的Unicode表情

Unicode表情符号是Unicode标准的一部分&#xff0c;适用于任何支持Unicode编码的语言和平台。Unicode是一种国际通用的字符编码标准&#xff0c;它涵盖了世界上几乎所有的文字、符号和表情符号&#xff0c;确保不同系统间的信息交换能够准确无误。 分类方式 表情符号&#xf…

如何保证数据库、缓存的双写一致?

文章目录 前言常见方案更新缓存的方案1. 先写缓存&#xff0c;再写数据库2. 先写数据库&#xff0c;再写缓存2.1. 写缓存失败2.2. 高并发问题2.3. 性能浪费 3. 先删缓存&#xff0c;再写数据库3.1. 高并发问题3.2. 缓存双删 4. 先写数据库&#xff0c;再删缓存5. 删除缓存失败怎…

单例模式a

为什么需要单例模式&#xff1f; 保证类的实例在全局只有一个&#xff0c;避免无效对象创建和销毁时的资源消耗。 在Java中一切都是对象&#xff0c;实例方法的调用需要通过对象&#xff0c;为了调用类中的方法而创建对象&#xff0c;方法调用完成之后对象也需要被GC回收&…

Stable Diffusion之Ubuntu下部署

1、安装conda环境 conda create -n webui python3.10.6 2、激活环境 每次使用都要激活 conda activate webui 注意开始位置的变换 关闭环境 conda deactivate webui 3、离线下载SD 代码 https://github.com/AUTOMATIC1111/stable-diffusion-webui https://github.com/Stabilit…

CentOS7.9.2009安装Kibana7.11.1

本文章使用CentOS7.9.2009服务器安装kibana7.11.1软件 1.服务器信息 [root@elasticsearch ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@elasticsearch ~]# 2.kibana安装 2.1.创建kibana用户 创建kibana用户和组 命令: useradd kibana [r…

10个大型语言模型(LLM)常见面试问题和答案解析

今天我们来总结以下大型语言模型面试中常问的问题 1、哪种技术有助于减轻基于提示的学习中的偏见? A.微调 Fine-tuning B.数据增强 Data augmentation C.提示校准 Prompt calibration D.梯度裁剪 Gradient clipping 答案:C 提示校准包括调整提示&#xff0c;尽量减少产生…

SQL注入sqli_labs靶场第九、十题

第九题 ?id1 and 11 页面正常 ?id1 and 12 页面正常 ?id1 and 11 页面正常 ?id1 and 12 页面正常 输入任何信息&#xff0c;均显示相同页面&#xff0c;尝试延时注入判断 ?id1 and if(11,sleep(5),1)-- 页面迅速显示 ?id1 and if(11,sleep(5),1)-- 页面过了5秒显示 判断为…

http请求头导致了dial tcp:lookup xxxx on 10.43.0.10:53 no sunch host

事实证明人有的时候也不能太偷懒&#xff0c;太偷懒容易给自己埋坑。 问题的背景&#xff1a; web端调用服务A&#xff0c;服务A异步调用服务B。服务A有四个场景需要调用服务B&#xff0c;所以&#xff0c;服务A中封装了一个公用的方法&#xff0c;唯一的区别是&#xff0c;场…

IDEA 控制台中文乱码 4 种解决方案

前言 IntelliJ IDEA 如果不进行相关设置&#xff0c;可能会导致控制台中文乱码、配置文件中文乱码等问题&#xff0c;非常影响编码过程中进行问题追踪。本文总结了 IDEA 中常见的中文乱码解决方法&#xff0c;希望能够帮助到大家。 IDEA 中文乱码 解决方案 一、设置字体为支…