Eviction Manager

Eviction Manager 工作机制

February 26, 2020
Kubernetes
Kubelet, Eviction Manager

概述 # 在可用计算资源较少时,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 来触发驱逐动作,实现资源回收。 驱逐信号 # 在源码 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. ...