pod为什么会被驱逐及如何避免pod被驱逐导致的服务中断
Pod被驱逐的原因主要有以下几点:
- 资源不足:当节点资源(如CPU、内存、存储等)不足以满足Pod的资源需求时,调度器会选择将其中一个或多个Pod驱逐出节点,以便在资源有限的节点上安排新的Pod。
- 超出资源限制:Pod可以指定资源上限,如CPU和内存的限制。如果Pod使用的资源超过了所指定的限制,该Pod可能会被驱逐。
- 节点压力驱逐:Kubernetes会不断检查资源使用情况,当节点压力过大的时候,会触发节点压力驱逐。例如,当nodefs(节点文件系统)使用量达到阈值时,kubelet会拒绝在该节点上运行新Pod,并尝试删除已死亡的Pod和容器来回收磁盘空间。如果此时nodefs使用量仍然没有低于阈值,kubelet就会开始驱逐Pod。
- 镜像拉取失败:如果Pod所需的镜像无法拉取或拉取失败,Kubernetes可能会重试一定次数后将其标记为“Evicted”状态,即被驱逐。
此外,Pod被驱逐的原因还可能与Pod的优先级和服务质量(QoS)有关。在抢占式驱逐中,kube-scheduler会检查是否通过驱逐一些优先级较低的Pod,以保障新的Pod可以调度。
请注意,Pod被驱逐是一种保护机制,旨在确保Kubernetes集群的稳定运行和资源的合理利用。但是,驱逐操作可能会导致Pod中的数据丢失或服务中断,因此在设计应用时需要考虑到这一点,并采取相应的措施来避免或减少影响。
要避免Pod被驱逐导致的服务中断,可以采取以下措施:
资源限制与预留:
- 为Pod设置合适的资源请求(requests)和限制(limits),确保Pod有足够的资源运行,同时避免资源浪费。
- 考虑为关键服务预留节点资源,确保这些服务在资源紧张时不会被驱逐。
Pod优先级与抢占策略:
- 根据服务的重要性和优先级priorityClassName,为Pod设置不同的优先级。这样,在资源不足时,优先级较低的Pod会首先被驱逐,从而保护优先级较高的服务。
- 谨慎使用抢占策略preemptionPolicy,确保在驱逐Pod之前已经充分评估了其对服务的影响。
PodDisruptionBudget(PDB):
使用PodDisruptionBudget来限制可以驱逐的Pod数量,确保服务在升级或维护过程中仍有一定的容错能力。
根据服务的实际需求和可用性要求,设置合适的PDB值。
滚动升级与蓝绿部署:
- 采用滚动升级策略,逐步更新Pod,以减少同时被驱逐的Pod数量,降低服务中断的风险。
- 考虑使用蓝绿部署,通过同时运行新旧版本的服务,确保在升级过程中服务不中断。
监控与告警:
- 实时监控Pod的状态和节点资源使用情况,及时发现潜在的资源不足问题。
- 设置告警规则,当节点资源使用率达到一定阈值时,及时通知相关人员进行处理。
备份与恢复策略:
- 为Pod数据设置备份策略,定期备份数据以防止数据丢失,可使用velero。
- 在Pod被驱逐后,尽快恢复服务并恢复数据,以减少服务中断的影响。
通过综合考虑以上措施,可以有效降低Pod被驱逐导致的服务中断风险。同时,需要根据具体的应用场景和需求来定制合适的策略。
pod为什么会被驱逐及如何避免pod被驱逐导致的服务中断的更多相关文章
- k8s驱逐篇(2)-kubelet节点压力驱逐
kubelet节点压力驱逐 kubelet监控集群节点的 CPU.内存.磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平 ...
- k8s驱逐篇(3)-kubelet节点压力驱逐-源码分析篇
kubelet节点压力驱逐-概述 kubelet监控集群节点的 CPU.内存.磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消 ...
- pod(五):pod hook(pod钩子)和优雅的关闭nginx pod
目录 一.系统环境 二.前言 三.pod hook(pod钩子) 四.如何优雅的关闭nginx pod 一.系统环境 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架 ...
- k8s驱逐篇(4)-kube-scheduler抢占调度驱逐
介绍kube-scheduler抢占调度驱逐之前,先简单的介绍下kube-scheduler组件: kube-scheduler简介 kube-scheduler组件是kubernetes中的核心组件 ...
- 【解决】Pod 状态一直 Terminating,Need to kill Pod
偶然查看服务时发现有个单副本的 pod 一直处于Terminating状态,已达 8 天之久,且手动删除删除不掉 [appuser@lyj 2019-09-20 14:35:36 ~]$ kubect ...
- Kubernetes Pod 驱逐详解
原文链接:Kubernetes Pod 驱逐详解 在 Kubernetes 中,Pod 使用的资源最重要的是 CPU.内存和磁盘 IO,这些资源可以被分为可压缩资源(CPU)和不可压缩资源(内存,磁盘 ...
- 十六, k8s集群资源需求和限制, 以及pod驱逐策略。
目录 容器的资源需求和资源限制 QoS Classes分类 Guaranteed Burstable Best-Effort kubernetes之node资源紧缺时pod驱逐机制 Qos Class ...
- kubernetes之node资源紧缺时pod驱逐机制
在系统硬件资源紧缺的情况下保证node的稳定性, 是kubelet需要解决的一个重要问题 1.驱逐策略 kubelet持续监控主机的资源使用情况, 一旦出现资源紧缺的迹象, kubelet就会主动终止 ...
- Kubernetes中 Pod 是怎样被驱逐的?
前言 在 Kubernetes 中,Pod 使用的资源最重要的是 CPU.内存和磁盘 IO,这些资源可以被分为可压缩资源(CPU)和不可压缩资源(内存,磁盘 IO).可压缩资源不可能导致 Pod 被驱 ...
- Kubernetes Pod驱逐策略
Kubelet 能够主动监测和防止计算资源的全面短缺. 在资源短缺的情况下,kubelet 可以主动地结束一个或多个 Pod 以回收短缺的资源. 当 kubelet 结束一个 Pod 时,它将终止 P ...
随机推荐
- 域名解析迟迟不生效,刷新本地DNS的方法
ipconfig /flushdns 刷新后,再ping 发生域名解析 的指向就对了.!
- Linux-cp命令常用选项
cp 命令是 Linux 中一个重要的命令,你可能经常会用到它.正如名称所示,cp 代表 复制(copy),它被用于在 Linux 命令行中复制文件和目录. 语法格式 mv [选项] 源文件或目录 目 ...
- Java集合篇之深入解析ArrayList,这六问你答的上来吗?
写在开头 开年第一篇,先祝各位新的一年身体健康,学业有成,事业有成哈,春节期间就是咔咔乱吃,咔咔乱玩,把学习都抛一边子去了,已经9天没有学习了,深深的懊悔,从今天开始,2024年的学习正式开启,一起给 ...
- mac os 解决Error: EMFILE: too many open files错误
壹 ❀ 引 构建项目时终端反复出现Error: EMFILE: too many open files的错误,经排查是因为项目较大,发布过程中已经超过了mac默认的文件监听上限,错误如下: 解决方式也 ...
- NC26257 小雨坐地铁
题目链接 题目 题目描述 小雨所在的城市一共有 \(m\) 条地铁线,分别标号为 1 号线,2 号线,--,m 号线.整个城市一共有 \(n\) 个车站,编号为 \(1 \sim n\) .其中坐 i ...
- Spring Boot整合JWT实现接口访问认证
最近项目组需要对外开发相关API接口,需要对外系统进行授权认证.实现流程是先给第三方系统分配appId和appSecret,第三方系统调用我getToken接口获取token,然后将token填入Au ...
- ghost方式批量安装win7
1. 需求介绍: 最近工作中需要给几百台PC安装win7操作系统,同时需要安装系统驱动和一些办公软件.刚开始是使用U盘制作的win7启动盘安装,发现效率太低,因为中间需要人监控安装进度以待安装好系 ...
- Java并发编程实例--15.在同步代码块中使用条件
并发编程中有个经典问题: 生产消费者问题. 我们有一个数据缓冲区,一个或多个生产者往其中存入对象,另外一个或多个消费者从中取走. 因此,该数据缓冲区是一个共享数据结构,我们需要对其添加读取同步机制,但 ...
- Redis居然还有比RDB和AOF更强大的持久化方式?
https://cloud.tencent.com/developer/article/1786055
- day07---系统命令
课程知识概述--系统命令 seq cat less more head tail grep tr alias 复习 1.echo -e 激活特殊的意义 \n 表示回车 \t tab键 [root@ol ...