Pod被驱逐的原因主要有以下几点:

  1. 资源不足:当节点资源(如CPU、内存、存储等)不足以满足Pod的资源需求时,调度器会选择将其中一个或多个Pod驱逐出节点,以便在资源有限的节点上安排新的Pod。
  2. 超出资源限制:Pod可以指定资源上限,如CPU和内存的限制。如果Pod使用的资源超过了所指定的限制,该Pod可能会被驱逐。
  3. 节点压力驱逐:Kubernetes会不断检查资源使用情况,当节点压力过大的时候,会触发节点压力驱逐。例如,当nodefs(节点文件系统)使用量达到阈值时,kubelet会拒绝在该节点上运行新Pod,并尝试删除已死亡的Pod和容器来回收磁盘空间。如果此时nodefs使用量仍然没有低于阈值,kubelet就会开始驱逐Pod。
  4. 镜像拉取失败:如果Pod所需的镜像无法拉取或拉取失败,Kubernetes可能会重试一定次数后将其标记为“Evicted”状态,即被驱逐。

此外,Pod被驱逐的原因还可能与Pod的优先级和服务质量(QoS)有关。在抢占式驱逐中,kube-scheduler会检查是否通过驱逐一些优先级较低的Pod,以保障新的Pod可以调度。

请注意,Pod被驱逐是一种保护机制,旨在确保Kubernetes集群的稳定运行和资源的合理利用。但是,驱逐操作可能会导致Pod中的数据丢失或服务中断,因此在设计应用时需要考虑到这一点,并采取相应的措施来避免或减少影响。

要避免Pod被驱逐导致的服务中断,可以采取以下措施:

  1. 资源限制与预留

    • 为Pod设置合适的资源请求(requests)和限制(limits),确保Pod有足够的资源运行,同时避免资源浪费。
    • 考虑为关键服务预留节点资源,确保这些服务在资源紧张时不会被驱逐。
  2. Pod优先级与抢占策略

    • 根据服务的重要性和优先级priorityClassName,为Pod设置不同的优先级。这样,在资源不足时,优先级较低的Pod会首先被驱逐,从而保护优先级较高的服务。
    • 谨慎使用抢占策略preemptionPolicy,确保在驱逐Pod之前已经充分评估了其对服务的影响。
  3. PodDisruptionBudget(PDB)

    • 使用PodDisruptionBudget来限制可以驱逐的Pod数量,确保服务在升级或维护过程中仍有一定的容错能力。

    • 根据服务的实际需求和可用性要求,设置合适的PDB值。

  4. 滚动升级与蓝绿部署

    • 采用滚动升级策略,逐步更新Pod,以减少同时被驱逐的Pod数量,降低服务中断的风险。
    • 考虑使用蓝绿部署,通过同时运行新旧版本的服务,确保在升级过程中服务不中断。
  5. 监控与告警

    • 实时监控Pod的状态和节点资源使用情况,及时发现潜在的资源不足问题。
    • 设置告警规则,当节点资源使用率达到一定阈值时,及时通知相关人员进行处理。
  6. 备份与恢复策略

    • 为Pod数据设置备份策略,定期备份数据以防止数据丢失,可使用velero。
    • 在Pod被驱逐后,尽快恢复服务并恢复数据,以减少服务中断的影响。

通过综合考虑以上措施,可以有效降低Pod被驱逐导致的服务中断风险。同时,需要根据具体的应用场景和需求来定制合适的策略。

pod为什么会被驱逐及如何避免pod被驱逐导致的服务中断的更多相关文章

  1. k8s驱逐篇(2)-kubelet节点压力驱逐

    kubelet节点压力驱逐 kubelet监控集群节点的 CPU.内存.磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平 ...

  2. k8s驱逐篇(3)-kubelet节点压力驱逐-源码分析篇

    kubelet节点压力驱逐-概述 kubelet监控集群节点的 CPU.内存.磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消 ...

  3. pod(五):pod hook(pod钩子)和优雅的关闭nginx pod

    目录 一.系统环境 二.前言 三.pod hook(pod钩子) 四.如何优雅的关闭nginx pod 一.系统环境 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架 ...

  4. k8s驱逐篇(4)-kube-scheduler抢占调度驱逐

    介绍kube-scheduler抢占调度驱逐之前,先简单的介绍下kube-scheduler组件: kube-scheduler简介 kube-scheduler组件是kubernetes中的核心组件 ...

  5. 【解决】Pod 状态一直 Terminating,Need to kill Pod

    偶然查看服务时发现有个单副本的 pod 一直处于Terminating状态,已达 8 天之久,且手动删除删除不掉 [appuser@lyj 2019-09-20 14:35:36 ~]$ kubect ...

  6. Kubernetes Pod 驱逐详解

    原文链接:Kubernetes Pod 驱逐详解 在 Kubernetes 中,Pod 使用的资源最重要的是 CPU.内存和磁盘 IO,这些资源可以被分为可压缩资源(CPU)和不可压缩资源(内存,磁盘 ...

  7. 十六, k8s集群资源需求和限制, 以及pod驱逐策略。

    目录 容器的资源需求和资源限制 QoS Classes分类 Guaranteed Burstable Best-Effort kubernetes之node资源紧缺时pod驱逐机制 Qos Class ...

  8. kubernetes之node资源紧缺时pod驱逐机制

    在系统硬件资源紧缺的情况下保证node的稳定性, 是kubelet需要解决的一个重要问题 1.驱逐策略 kubelet持续监控主机的资源使用情况, 一旦出现资源紧缺的迹象, kubelet就会主动终止 ...

  9. Kubernetes中 Pod 是怎样被驱逐的?

    前言 在 Kubernetes 中,Pod 使用的资源最重要的是 CPU.内存和磁盘 IO,这些资源可以被分为可压缩资源(CPU)和不可压缩资源(内存,磁盘 IO).可压缩资源不可能导致 Pod 被驱 ...

  10. Kubernetes Pod驱逐策略

    Kubelet 能够主动监测和防止计算资源的全面短缺. 在资源短缺的情况下,kubelet 可以主动地结束一个或多个 Pod 以回收短缺的资源. 当 kubelet 结束一个 Pod 时,它将终止 P ...

随机推荐

  1. 基于队列实现生产者消费者(Python)

    # 进城之间数据隔离 # 进程之间通信(IPC) Inter Process communication # 基于文件 :同一台机器上的多个进程之间通信 # Queue 队列 # 基于socket的文 ...

  2. Unity框架中的核心类

    组件:Component 在Unity中,所有的游戏对象都可以挂载组件.组件控制着游戏对象的行为和外观,例如渲染.动画.碰撞检测等. 而Component就是组件的基类,提供了一些通用的方法和属性,例 ...

  3. Vite4+Typescript+Vue3+Pinia 从零搭建(1) - 项目初始化

    项目代码同步至码云 weiz-vue3-template 前提准备 1. node版本 Node.js版本 >= 12,如果有老项目需要旧版本的,推荐用 nvm 管理node版本. PS C:\ ...

  4. 【scikit-learn基础】--『分类模型评估』之评估报告

    分类模型评估时,scikit-learn提供了混淆矩阵和分类报告是两个非常实用且常用的工具.它们为我们提供了详细的信息,帮助我们了解模型的优缺点,从而进一步优化模型. 这两个工具之所以单独出来介绍,是 ...

  5. P10033 题解

    不喜欢特判?不喜欢分讨?不喜欢被卡 corner?不喜欢证明?不喜欢动脑子? 那就看这篇题解! 感性思路 首先感性地感受一下题目宽泛的限制条件题解区各种花式的构造方法就不难想出,符合条件的序列实在很多 ...

  6. 24.1 SetUnhandledExceptionFilter未处理异常--《Windows核心编程》

    对于未处理异常,例如异常过滤返回EXCEPTION_CONTINUE_SEARCH,向上搜索,但无法搜索到处理部分,产生未处理异常.Windows提供了 SetUnhandledExceptionFi ...

  7. 大数据技术之DataX

    一.DataX简介 DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之 ...

  8. [Java][Spring]spring profile与maven profile多环境管理

    spring profile 与 maven profile 多环境管理 spring profile Spring profile是Spring提供的多环境管理方案. 如下图: 每种环境都对应一个y ...

  9. JS Leetcode 690. 员工的重要性 题解分析

    壹 ❀ 引 本题来自LeetCode690. 员工的重要性,难度简单,题目描述如下: 给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id . 比如,员工 1 是 ...

  10. NC19857 最后的晚餐(dinner)

    题目链接 题目 题目描述 ​ **YZ(已被和谐)的食堂实在是太挤辣!所以Apojacsleam现在想邀请他的一些好友去校外吃一顿饭,并在某酒店包下了一桌饭. ​ 当Apojacsleam和他的同学们 ...