Skip to content

驱逐策略

驱逐策略

简介

驱逐策略是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%"  

总结

  • 硬驱逐
  • 软驱逐