Kubelet Eviction Manager工作机制

本文详细介绍了Kubelet Eviction Manager的工作机制,包括驱逐信号、阈值、周期、节点状态、资源回收策略等内容。在资源紧张时,Kubelet会根据预设的软硬驱逐策略回收Pod,确保节点稳定性。驱逐过程涉及内存、磁盘等资源,以及QoS等级的考虑,以最小化不必要的驱逐操作。
摘要由CSDN通过智能技术生成

一、概述

​ 在可用计算资源较少时,kubelet为保证节点稳定性,会主动地结束一个或多个pod以回收短缺地资源,这在处理内存和磁盘这种不可压缩资源时,驱逐pod回收资源的策略,显得尤为重要。下面来具体研究下Kubelet Eviction Policy的工作机制。

  • kubelet预先监控本节点的资源使用,防止资源被耗尽,保证节点稳定性。
  • kubelet会预先Fail N(>=1)个Pod,以回收出现紧缺的资源。
  • kubelet在Fail一个pod时,kill掉pod内所有container,并设置pod.status.phase = Failed。
  • kubelet按照事先设定好的Eviction Threshold来触发驱逐动作,实现资源回收。

1.1 驱逐信号

在源码pkg/kubelet/eviction/api/types.go中定义了以下及几种Eviction Signals:

Eviction Signal Description
memory.available := node.status.capacity[memory] - node.stats.memory.workingSet
nodefs.available := node.stats.fs.available
nodefs.inodesFree := node.stats.fs.inodesFree
imagefs.available := node.stats.runtime.imagefs.available
imagefs.inodesFree := node.stats.runtime.imagefs.inodesFree
allocatableMemory.available := pod.allocatable - pod.workingSet
pid.available := node.MaxPID - node.NumOfRunningProcesses

上表主要涉及三个方面,memory、file system和pid。其中kubelet值支持2种文件系统分区:

  1. nodefs:kubelet用来存储volume和daemon logs等
  2. imagesfs:容器运行时(docker等)用来保存镜像和容器的writable layer

1.2 驱逐阈值

kubelet的入参接收用户定义的eviction signal和eviction threshold的映射关系,格式如下:

[eviction-signal] [opterator] [quantity]

  • 支持的signal如上表所示ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值