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. 《字节码编程》PDF107页,11万字。既然市面缺少ASM、Javassist、Byte-buddy成体系的学习资料,那我来!

    作者:小傅哥 博客:https://bugstack.cn - 汇总系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 让人怪不好意思的,说是出书有点膨胀,毕竟这不是走出版社的流程,选题. ...

  2. SpringAOP配置要点

    一.基于配置文件 1.关于aop配置文件相关 <!--配置aop--> <aop:config> <!--配置切入点表达式--> <aop:pointcut ...

  3. 每日一道Java面试题:说一说Java中的泛型?

    写在开头 今天的每日一道Java面试题聊的是Java中的泛型,泛型在面试的时候偶尔会被提及,频率不是特别高,但在日后的开发工作中,却是是个高频词汇,因此,我们有必要去认真的学习它. 泛型的定义 什么是 ...

  4. 【STL源码剖析】vector类模拟实现 了解底层-走进底层-掌握底层【超详细的注释和解释】

    今天博主继续带来STL源码剖析专栏的第二篇博客了! 今天带来vector的模拟实现! 其实在很多人学习C++过程中,都是只学习一些STL的使用方式,并不了解底层的实现.博主本人认为,这样的学习这样的技 ...

  5. 【图论】【Matlab】最小生成树之Kruskal算法【贪心思想超详细详解Kruskal算法并应用】

    最小生成树之Kruskal算法 注意:内容学习来自:b站CleverFrank数模算法精讲 导航 前言 实际问题引入 Kruskal算法 整体代码展示 尾声 前言 博主今天给大家带来的是最小生成树中两 ...

  6. Oracle预防alert日志过大的脚本:del_alertlog.sh

    Oracle预防alert日志过大的脚本 参考:https://blog.csdn.net/jc_benben/article/details/88798523 在原文思路的基础上,做了一些修正,实测 ...

  7. sshd命令-测试sshd_config配置是否正确

    sshd命令来自于英文词组"SSH daemon"的缩写,其功能是用于openssh服务器守护进程.openssh套件能够为两台主机之间建立加密的.可信任的数据通信服务,是rlog ...

  8. Windows终端的一些配置

    前言 记录早前拿到新的笔记本(win10)后配置命令行的过程,以下是环境: 命令行 : CMD,PowerShell7 Shell :Windows Terminal 设置编码格式(当前代码页)为UT ...

  9. Ubuntu安装typecho博客

    Ubuntu安装typecho博客 简介 名称的来历 Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴. Type,有打字的意思,博客这个东西,正是一个让我们通过打 ...

  10. NC24623 Tree Decoration

    题目链接 题目 题目描述 Farmer John is decorating his Spring Equinox Tree (like a Christmas tree but popular ab ...