ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kubernetes Pod驱逐策略

2021-03-12 15:53:21  阅读:146  来源: 互联网

标签:驱逐 Kubernetes 阈值 宽限期 kubelet Pod 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 排名:

  • BestEffort 或 Burstable,其对短缺资源的使用超过了其请求,此类 pod 按优先级排序,然后使用高于请求。
  • Guaranteed pod 和 Burstable pod,其使用率低于请求,最后被驱逐。Guaranteed Pod 只有为所有的容器指定了要求和限制并且它们相等时才能得到保证。由于另一个 Pod 的资源消耗,这些 Pod 保证永远不会被驱逐。如果系统守护进程(例如 kubelet、docker、和 journald)消耗的资源多于通过 system-reserved 或 kube-reserved 分配保留的资源,并且该节点只有 Guaranteed 或 Burstable Pod 使用少于剩余的请求,然后节点必须选择驱逐这样的 Pod 以保持节点的稳定性并限制意外消耗对其他 pod 的影响。在这种情况下,它将首先驱逐优先级最低的 pod。
    必要时,kubelet会在遇到 DiskPressure 时逐个驱逐 Pod 来回收磁盘空间。如果 kubelet 响应 inode 短缺,它会首先驱逐服务质量最低的 Pod 来回收 inodes。如果 kubelet 响应缺少可用磁盘,它会将 Pod 排在服务质量范围内,该服务会消耗大量的磁盘并首先结束这些磁盘。

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

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有