其他分享
首页 > 其他分享> > Kubernetes Pod驱逐策略

Kubernetes Pod驱逐策略

作者:互联网

Kubernetes Pod驱逐策略

scofield 菜鸟运维杂谈

Kubelet 能够主动监测和防止计算资源的全面短缺。在资源短缺的情况下,kubelet 可以主动地结束一个或多个 Pod 以回收短缺的资源。当 kubelet 结束一个 Pod 时,它将终止 Pod 中的所有容器,而 Pod 的 Phase 将变为 Failed。如果被驱逐的 Pod 由 Deployment 管理,这个 Deployment 会创建另一个 Pod 给 Kubernetes 来调度。
配置资源不足时的处理方式:

驱逐信号


kubelet 支持按照以下信号触发驱逐决定。

Kubernetes Pod驱逐策略

驱逐阈值


kubelet支持指定驱逐阈值,用于触发 kubelet 回收资源。
每个阈值形式如下:


[eviction-signal][operator][quantity]

合法的 eviction-signal 标志如上图所示。
operator 是所需的关系运算符,例如 <,>。
quantity 是驱逐阈值值标志,例如 1Gi。合法的标志必须匹配 Kubernetes 使用的数量表示。 驱逐阈值也可以使用 % 标记表示百分比。

举例说明,如果一个节点有 10Gi 内存,希望在可用内存下降到 1Gi 以下时引起驱逐操作, 则驱逐阈值可以使用下面任意一种方式指定(但不是两者同时)。


memory.available<10%
memory.available<1Gi

软驱逐阈值


软驱逐阈值使用一对由驱逐阈值和管理员必须指定的宽限期组成的配置对。在超过宽限期前,kubelet不会采取任何动作回收和驱逐信号关联的资源。如果没有提供宽限期,kubelet启动时将报错。

此外,如果达到了软驱逐阈值,操作员可以指定从节点驱逐 pod 时,在宽限期内允许结束的 pod 的最大数量。如果指定了 pod.Spec.TerminationGracePeriodSeconds 值, kubelet 将使用它和宽限期二者中较小的一个。如果没有指定,kubelet将立即终止 pod,而不会优雅结束它们。

软驱逐阈值的配置支持下列标记:

Kubernetes Pod驱逐策略

硬驱逐阈值


硬驱逐阈值没有宽限期,一旦察觉,kubelet将立即采取行动回收关联的短缺资源。如果满足硬驱逐阈值,kubelet将立即结束 pod 而不是优雅终止。

硬驱逐阈值的配置支持下列标记:
eviction-hard 描述了驱逐阈值的集合(例如 memory.available<1Gi),如果满足条件将触发 pod 驱逐。

Kubernetes Pod驱逐策略

驱逐监控时间间隔


kubelet 根据其配置的整理时间间隔计算驱逐阈值。
housekeeping-interval 是容器管理时间间隔。

驱逐最终用户的 pod


如果 kubelet 在节点上无法回收足够的资源,kubelet将开始驱逐 pod。

kubelet 首先根据他们对短缺资源的使用是否超过请求来排除 pod 的驱逐行为, 然后通过优先级, 然后通过相对于 pod 的调度请求消耗急需的计算资源。

kubelet 按以下顺序对要驱逐的 pod 排名:

PS:后续文章会同步到dev.kubeops.net

注:文中部分图片来源于网络,如有侵权,请联系我及时删除。

标签:驱逐,Kubernetes,阈值,宽限期,kubelet,Pod,pod
来源: https://blog.51cto.com/15060545/2657235