一、概述
在可用计算资源较少时,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种文件系统分区:
- nodefs:kubelet用来存储volume和daemon logs等
- imagesfs:容器运行时(docker等)用来保存镜像和容器的writable layer
1.2 驱逐阈值
kubelet的入参接收用户定义的eviction signal和eviction threshold的映射关系,格式如下:</
Kubelet Eviction Manager:资源回收策略解析

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

被折叠的 条评论
为什么被折叠?



