docker内存阀值_kubernetes调度之资源耗尽处理配置

本篇将介绍如何使用kubelet处理资源耗尽的情况

当可用的计算机资源非常低的时候,kubelet仍然要保证节点的稳定性.当处理不可压缩的计算机资源(比如内存或磁盘空间)时,这尤其重要,当这些资源被耗尽时,节点将变得不稳定

驱离策略

kubelet会积极的监视并阻止可用计算机资源耗尽.这种情况下,kubelet会终止一个或者多个pod来重新取回耗尽的资源,当kubelet终止一个pod时,它将会终止pod的所有容器并把PodPhase设置为Failed

驱离信号

kubelet支持基于下面列表中描述的驱离信号的驱离策略.每一个信号值都由后面description列来描述,并且它们是基于kubelet的summary API

Eviction Signal

Description

memory.available

memory.available := node.status.capacity[memory] - node.stats.memory.workingSet

nodefs.available

nodefs.available := node.stats.fs.available

nodefs.inodesFree

nodefs.inodesFree := node.stats.fs.inodesFree

imagefs.available

imagefs.available := node.stats.runtime.imagefs.available

imagefs.inodesFree

imagefs.inodesFree := node.stats.runtime.imagefs.inodesFree

以上的信号同时支持字面量或者百分比值.百分比值根据每个信号的总容量来计算

memory.available的值从cgroup里衍生出来,而不是通过free -m,这一点很重要因为free -m在容器里是无效的

kubelet仅支持以下两种文件类型分区:

nodefs文件系统,kubelet用于存储卷,守护进程log等

imagefs文件系统,容器运行时用于存储镜像和容器的可写层

imagefs是可选的,kubelet使用cAdvisor来自动发现.kubelet并不关心其它文件系统.其它类型的配置目前kubelet也不支持,比如把存储卷和log存放到filesystem是not OK的

驱离阈值

kubelet支持指定驱离阈值来来触发kubelet回收资源

每一个阈值都是以下形式的:

[eviction-signal][operator][quantity]

eviction-signal 是上面表中定义的一个信号token

operator是一种期望的操作符,比如

quantity 驱离阈值的量,比如1Gi,驱离阈值也可以是由%百分号表示的百分比值

比如说一个节点有10Gi总内存值,并且如果可用内存的值如果低于1Gi的时候你想要触发驱离,你可以以如下两种方式中的任一来定义驱离阈值

memory.available<10%或memory.available<1Gi但是你不能两者同时使用.

软驱离阈值

软驱离阈值和一个包含管理员指定的优雅时间的驱离阈值成对出现.驱离信号发出后,在优雅时间没有超出之前,kubelet不会回收资源.如果不指定优雅时间,kubelet会在一开始就返回错误

此外,如果软驱离阈值被满足,operator可以指定被驱离时最大允许的pod优雅终止时间.如果指定了,kubelet使用pod.Spec.TerminationGracePeriodSeconds和最大允许的优雅终止时间两者中较小的一个值.如果没有指定,kubelet会马上杀死pod

以下标识被用于支持软驱离阈值

eviction-soft描述了一系列软驱离阈值.

eviction-soft-grace-period描述了一系列驱离时间,(比如memory.available=1m30s),对应在驱离发生之前,软件驱离阈值持续的时间

eviction-max-pod-grace-period描述了当软驱离阈值被满足时,最大允许的优雅终止时间(单位是秒)

硬驱离阈值

硬驱离阈值没有优雅时段,kubelet会立马对相关的资源采取动作.如果硬驱离阈值被满足,kubelet会立马杀死pod,而没有优雅终止时段.

以下标识可以被用于配置硬驱离阈值

memory.available<100Mi

nodefs.available<10%

nodefs.inodesFree<5%

imagefs.available<15%

驱离监视时间间隔

通过housekeeping-interval

节点状态

kubelet把一个或多个驱离信号映射到的对应的节点状态上

如果硬驱离阈值被满足,或者不依赖于优雅时段的软驱离阈值被满足,kubelet会报告一种状态来反映节点处于压力之下

以下是节点状态和特定驱离信号间的关系

Node Condition

Eviction Signal

Description

MemoryPressure

memory.available

Available memory on the node has satisfied an eviction threshold

DiskPressure

nodefs.available, nodefs.inodesFree, imagefs.available, or imagefs.inodesFree

Available disk space and inodes on either the node’s root filesystem or image filesystem has satisfied an eviction threshold

kubelet会继续以--node-status-update-frequency指定的值(默认为10秒)来报告更新的节点状态

回收节点级别的资源

如果驱离阈值被满足并且优雅时段已过,kubelet开始启动对处于压力的资源的回收工作直到监测到压力信号已经消失并且低于定义的阈值

kubelete尝试优先回收节点级别的资源而不是驱离pod.如果监测到磁盘压力,如果节点有容器运行时专用的imagefs,则kubelet回收资源的方式不同

驱离pod

如果kubelet无法在节点上回收到足够的资源,则开始驱离pod.

kubelet首先会根据pod使用的资源是否超过了申请的资源,然后根据他们的优先级把要驱离的pod进行排序.

最终kubelet按照以下列出的顺序对要驱离的pod进行排序:

BestEffort或者Burstable类型pod

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

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

相关文章

hadoop fs命令无法使用_Hadoop从入门到入土(三)HDFS集群简单维护及JAVA客户端连接HDFS...

集群简单维护查看日志上篇我们搭建了集群&#xff0c;并且完成了hdfs的搭建&#xff0c;但在我的linux02和linux03上&#xff0c;发现一个问题&#xff0c;我启动了datanode之后&#xff0c;开始进程还在&#xff0c;一会就自己消失了&#xff0c;这是为什么呢&#xff1f;(如下…

c++ 函数返回空_Python all() 函数

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE&#xff0c;如果是返回 True&#xff0c;否则返回 False。元素除了是 0、空、None、False 外都算 True。语法all(iterable) # iterable -- 元组或列表。示例>>> all([a, b, c, d]) # 列表li…

python3.6和3.7的区别_python3.6和3.7有什么区别

Python 3.7 已经发布了&#xff0c;目前Python的用户&#xff0c;主要使用的版本 应该是 Python3.6 和 Python2.7 &#xff0c;那么是不是该转到 Python 3.7 呢&#xff1f;首先大家要知道Python 3.7 是对 Python 3.6 的升级。Python官方对 3.7 的新特性&#xff1a;(推荐学习&…

vue 日期格式化返回指定个数月份_12、vue中日期格式化转换的函数

/*** format time depend on the offer timestamp or Date instance* param {Number, Date } date 要转换的日期* param {String} format 字符串日期格式 default DD/MM/YYYY HH:mm* param {Boolean} instance describe 配置项, 如果为true 返回转换后的日期对象实例 …

beego 例子_beego框架代码分析

前言也许beego框架在国内应该是众多PHPer转go的首选&#xff0c;因为beego的MVC、ORM、完善的中文文档让PHPer们得心应手&#xff0c;毫无疑问我也是。这种感觉就像当年入门PHP时使用ThinkPHP一样。也许随着你的认知的提升&#xff0c;你会讨厌现在东西&#xff0c;比如某一天你…

kali2020识别不到网卡_WIN10环境下台式机找不到RealTek HD管理器解决耳塞式耳机外放问题...

最近想在工作休息闲暇时开个音乐播放器或者小游戏放松一下&#xff0c;需要戴上耳塞式耳机&#xff0c;但是最近这个耳机在公司台式电脑突然识别不到了&#xff0c;如果是自己的笔记本电脑在控制面板 - 硬件和声音里是可以找到“RealTek高清晰音频管理器”选项的&#xff0c;然…

韵乐x5效果器ktv最佳参数_家庭ktv(卡拉ok)家庭影院ktv选购推荐攻略

因为陆陆续续的给小区的邻居有推荐安装家庭KTV设备&#xff0c;根据他们的使用反馈和选购前遇到的问题&#xff0c;我做了汇总并整理了这篇文章. &#xff08;不写复杂的参数&#xff0c;不堆积商品推荐&#xff0c;只推荐几款不同价位&#xff0c;真正性能优质、价格美丽的家庭…

cat3 utp是不是网线_小科普 | 网线也有高低?聊聊网线的差别

好电脑、好主板、好网卡、好运营商、好套餐&#xff0c;是不是就意味着有了极好的网络体验呢&#xff1f;对&#xff0c;但也未必。因为还少算了最后一道关卡——网线。▌线材网线这个东西&#xff0c;看着还真都差不多&#xff0c;插上就能用这能有什么差别呢&#xff1f;首先…

redis续期_面试官:Redis分布式锁如何解决锁超时问题的?

一、前言关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完的问题, 这样会导致: A线程超时时间设为10s(为了解决死锁问题), 但代码执行时间可能需要30s, 然后redis服务端10s后将锁删除, 此时, B线程恰好申请锁…

markdown如何设置图片大小_不会吧,还不会用markdown排版吗

请使用 Chrome 浏览器。请阅读下方文本熟悉工具使用方法&#xff0c;本文可直接拷贝到微信中预览。1 Markdown Nice 简介支持自定义样式的 Markdown 编辑器支持微信公众号、知乎和稀土掘金欢迎扫码回复「排版」加入用户群2 主题https://preview.mdnice.com/themes/欢迎提交主题…

此次边路调整系统推荐射手走哪路_王者荣耀地图重大对称改动,终于能射手对射手,上单对上单了...

兄弟萌&#xff0c;一直困扰大家的地图问题终于要改了&#xff0c;王者峡谷将在今年的周年庆版本&#xff0c;迎来一次玩法体验的大升级&#xff01;调整介绍我们将尝试改造边路的地形&资源&#xff0c;促进更合理的同职业分路对线。以往通过职业、英雄的调整确实很难实质改…

二阶振荡环节的谐振频率_困惑了很久的串联/并联谐振电路详解

在含有电阻、电感和电容的交流电路中&#xff0c;电路两端电压与其电流一般是不同相的&#xff0c;若调节电路参数或电源频率使电流与电源电压同相&#xff0c;电路呈电阻性&#xff0c;称这时电路的工作状态为谐振。谐振现象是正弦交流电路的一种特定现象&#xff0c;它在电子…

安装不成功_iOS12.4.1 安装失败?教你百分百不掉签

说重点&#xff1a;近日&#xff0c;苹果频繁封杀证书&#xff0c;导致企业证书很缺&#xff0c;补上又封&#xff0c;想越狱又不能安装&#xff0c;实在困扰了很久&#xff0c;今天就分享百分百安装成功的方法&#xff0c;安装后配合自动续签插件&#xff0c;简直完美。接下来…

vsftpd设置被动模式_(1)vsftpd主、被动模式iptables配置方法

大多数的TCP服务是使用单个端口的连接&#xff0c;一般是用户向服务器的一个某个端口发起连接&#xff0c;然后使用这个连接进行通讯。但FTP协议却是例外&#xff0c;它使用双向的多个连接&#xff0c;而且使用的端口很难预计。FTP连接包括&#xff1a;一个控制连接 (controlco…

指定的参数已超出有效值的范围_整流二极管的特性和重要参数

一、 二极管的半导体原理略二、 二极管的特性曲线研究电路也有两种方法&#xff0c;一个是从它的内部工作原理去分析&#xff0c;另一个是从它表现出的外部特征去分析&#xff0c;把电路看成一个黑匣子&#xff0c;不管它内部什么结构什么原理&#xff0c;只研究它表现出来的特…

mysql boolean 和bool_关于 MySQL 的 boolean 和 tinyint(1)

boolean类型MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE&#xff0c;boolean在MySQL里的类型为tinyint(1),MySQL里有四个常量&#xff1a;true,false,TRUE,FALSE,它们分别代表1,0,1,0&#xff0c;mysql> select true,false,TRUE,FALSE;--------------------------| TRUE | …

mysql存储过程触发器_【MySQL笔记】触发器,存储过程和函数

2)case语句mysql > DELIMITER //mysql >CREATEPROCEDUREproc3 (inparameterint)->begin->declarevarint;->setvarparameter1;->casevar->when0then->insertintotvalues(17);->when1then->insertintotvalues(18);->else->insertintotvalues…

count返回0_MySQL实战 | 14 为什么count(*)越来越慢?

select count(*) 应该是一个比较常用的语句&#xff0c;用来统计记录行数。但是&#xff0c;慢慢地你会发现&#xff0c;这个语句越来越慢了&#xff0c;为什么呢&#xff1f;count(*) 的实现方式首先&#xff0c;我们来看下它的实现方式。MySQL 中&#xff0c;不同的存储引擎&…

mysql info commit_mysql show processlist 发现大量的commit

今天执行show processlist 发现大量的commit&#xff1b;查看锁信息&#xff0c;发现基本上都是-----------------------------------------------------------------------------------------------------------------------------------------------------------------------…

sql管理:索引超出范围必须为非负值并小于集合大小_java面试基础知识-数据库基础知识(数据库索引部分)...

1.1数据库架构&#xff1a;如何设计一个关系型数据库?存储模块&#xff08;文件系统&#xff09;用块或者页作为存储单位 程序实例&#xff1a;存储管理缓存机制 不宜过大&#xff0c;要有淘汰机制SQL解析日志管理权限划分容灾机制索引管理锁管理1.2 索引为什么要使用索引&…