驱逐策略
驱逐策略
简介
驱逐策略是Kubernetes(k8s)集群中一种重要的资源管理机制,用于在节点资源不足、节点故障或其他特定情况下重新分配Pod,以确保应用的可用性和稳定性。当集群中的节点资源不足或节点出现故障时,驱逐策略能够自动将Pod从问题节点上驱逐,并在其他健康节点上重新创建这些Pod,从而避免资源争用和系统不稳定。
硬驱逐
- 定义与特点:硬驱逐是一种较为直接和强制的资源回收方式。当节点的资源使用量达到或超过预设的硬驱逐阈值时,kubelet会立即触发驱逐动作,将Pod从节点上删除,而不是优雅地终止它们。硬驱逐没有宽限期,一旦条件满足,就会立即执行。
- 配置参数:
eviction-hard
:定义了硬驱逐的阈值条件,如内存、磁盘空间等资源的可用量。
软驱逐
- 定义与特点:软驱逐提供了一种更为灵活的资源回收机制。当节点的资源使用量达到软驱逐阈值时,kubelet会首先观察一段时间(宽限期),如果在这段时间内资源使用量下降到阈值以下,则不进行驱逐;如果资源使用量持续保持在阈值以上,则会触发驱逐动作。软驱逐允许系统有一定的缓冲时间,以避免因瞬时资源高峰而导致的Pod频繁驱逐。
- 配置参数:
eviction-soft
:定义了软驱逐的阈值条件。eviction-soft-grace-period
:定义了触发软驱逐后等待的时间,即宽限期。eviction-max-pod-grace-period
:定义了从触发软驱逐到实际驱逐Pod之间的最大宽限时间(单位秒)。
示例
# 软驱逐
evictionSoft:
memory.available: "1.5Gi"
nodefs.available: "10%"
nodefs.inodesFree: "5%"
imagefs.available: "15%"
imagefs.inodesFree: "10%"
evictionSoftGracePeriod:
memory.available: "1m30s"
nodefs.available: "1m30s"
nodefs.inodesFree: "1m30s"
imagefs.available: "1m30s"
imagefs.inodesFree: "1m30s"
# 硬驱逐阈值
evictionHard:
memory.available: "1Gi"
nodefs.available: "5%"
nodefs.inodesFree: "5%"
imagefs.available: "10%"
imagefs.inodesFree: "5%"
总结
- 硬驱逐
- 软驱逐