k8s优雅终止pod

news2025/8/13 11:32:48

k8s优雅终止pod

概述

Pod 销毁时,会停止容器内的进程,通常在停止的过程中我们需要执行一些善后逻辑,比如等待存量请求处理完以避免连接中断,或通知相关依赖进行清理等,从而实现优雅终止目的。本文介绍在 Kubernetes 场景下,实现容器优雅终止的最佳实践。

容器终止流程

我们先了解下容器在 Kubernetes 环境中的终止流程:

  1. Pod 被删除,状态置为 Terminating
  2. kube-proxy 更新转发规则,将 Pod 从 service 的 endpoint 列表中摘除掉,新的流量不再转发到该 Pod。
  3. 如果 Pod 配置了 preStop Hook ,将会执行。
  4. kubelet 对 Pod 中各个 container 发送 SIGTERM 信号以通知容器进程开始优雅停止。
  5. 等待容器进程完全停止,如果在 terminationGracePeriodSeconds 内 (默认 30s) 还未完全停止,就发送 SIGKILL 信号强制杀死进程。
  6. 所有容器进程终止,清理 Pod 资源。

合理使用 preStop Hook

若你的业务代码中没有处理 SIGTERM 信号,或者你无法控制使用的第三方库或系统来增加优雅终止的逻辑,也可以尝试为 Pod 配置下 preStop,在这里面实现优雅终止的逻辑,示例:

        lifecycle:
          preStop:
            exec:
              command:
              - /clean.sh

参考 Kubernetes API 文档

在某些极端情况下,Pod 被删除的一小段时间内,仍然可能有新连接被转发过来,因为 kubelet 与 kube-proxy 同时 watch 到 pod 被删除,kubelet 有可能在 kube-proxy 同步完规则前就已经停止容器了,这时可能导致一些新的连接被转发到正在删除的 Pod,而通常情况下,当应用受到 SIGTERM 后都不再接受新连接,只保持存量连接继续处理,所以就可能导致 Pod 删除的瞬间部分请求失败。

这种情况下,我们也可以利用 preStop 先 sleep 一小下,等待 kube-proxy 完成规则同步再开始停止容器内进程:

        lifecycle:
          preStop:
            exec:
              command:
              - sleep
              - 5s

调整优雅时长

如果需要的优雅终止时间比较长 (preStop + 业务进程停止可能超过 30s),可根据实际情况自定义 terminationGracePeriodSeconds,避免过早的被 SIGKILL 杀死,示例:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习—入门

深度学习与机器学习的区别 深度学习由机器学习中的神经网络发展而来,机器学习多用于处理数值数据,而深度学习还可处理图片、音频等数据。 特征提取方面 机器学习的特征工程步骤需要靠手动完成,需要大量专业领域知识。深度学习通常由多个层组…

Mysql8.0 包学包会!一篇文章解决Mysql

基于尚硅谷的Mysql8.0视频,修修改改。提取了一些精炼的内容。 首先需要在数据库内引入一张表。链接地址如下。 链接:https://pan.baidu.com/s/1DD83on3J1a2INI7vrqPe4A 提取码:68jy 会进行持续更新。。 1. Mysql目录结构 Mysql的目录结构…

传感器-红外接收,NodeMCU,arduino实现红外接收,4.x版本的irRemote库的使用

一&#xff0c;常见视频和搜索到接收红外的代码 发送参考&#xff0c;接收参考 这里只是看arduino中的接收程序&#xff0c; #include <IRremote.h> int RECV_PIN 5; /红外接收模块的s引脚 IRrecv irrecv(RECV_PIN); decode_results results; void setup() {Serial.b…

复现Apache HTTPD 换行解析漏洞(CVE-2017-15715)

影响版本 2.4.0~2.4.29都有可能存在该漏洞 原理分析 进入容器 docker exec -it 容器ID /bin/bash 该程序是采用黑名单的形式&#xff0c;如果文件后缀名不在名单内即可上传&#xff0c;所以 a.php\x0A不在黑名单列表中&#xff0c;可以上传。但是x0A是换行符&#xff0c;所…

Cahpter 3 : Defining Clocks(ug903:Vivado using constraints

1、About Clocks 在数字设计中&#xff0c;时钟代表了从寄存器到寄存器可靠传输数据的时间基准。XilinxVivado集成设计环境&#xff08;IDE&#xff09;时序引擎使用时钟特性来计算时序路径要求&#xff0c;并通过松弛计算报告设计时序裕度。必须正确定义时钟&#xff…

本原数据:回归数据库技术本原,做难而正确的事

数据库技术是信息科技领域的最为重要的技术之一。随着科技的不断进步&#xff0c;数据库技术得到了迅速的发展&#xff0c;应用范围也越来越广泛。 与此同时&#xff0c;在数据量持续高速增长的情况下&#xff0c;企业对数据库也提出了更高的要求&#xff0c;例如数据存储越来…

海尔智家:智慧场景掌握「主动」权,用户体验才有话语权

2023年1月&#xff0c;《福布斯》AI专栏作家Rob Toews发布了年度AI发展预测&#xff0c;指出人工智能的发展将带来涉及各行业、跨学科领域的深远影响。变革将至&#xff0c;全球已掀起生成式AI热&#xff0c;以自然语言处理为代表的人工智能技术在快速进化&#xff0c;积极拥抱…

在maven工程下使用springmvc框架启动tomcat时报404 以及常见的错误和解决方式

以下的问题是我花了三天的时间解决的bug,网上找的各种资源都是一个样子&#xff0c;不能解决我的问题&#xff0c;非常的蛋疼。最后在咸鱼花了我15元找了个大神帮我调试的。 1.问题一 idea中通过maven已经导入了包&#xff0c;idea中也能定位到包的位置&#xff0c;本地maven仓…

用Python分析周杰伦歌曲并进行数据可视化

大家好&#xff0c;今天我们用python分析下周杰伦歌曲。为了尽量完整地呈现从原始数据到可视化的过程&#xff0c;接下来我们会先简单讲解数据的预处理过程&#xff0c;即如何将 JSON 数据转化为Excel 格式&#xff0c;以及如何对周杰伦的歌曲进行分词。 本案例中的歌词数据来…

RedHat Linux系统故障修复—— grub引导、MBR损坏修复过程

一、故障问题 MBR损坏是一种非常常见的错误&#xff0c;两种情况&#xff1a;1.MBR文件损坏 2.grub目录被误删除 1.首先&#xff0c;MBR是安装在硬盘的第一个扇区上占用了512个字节&#xff0c;其中前446字节是bootloader用于引导操作系统&#xff08;中间的64个自己用来指定…

KDJB-802C继电器成组保护校验仪

一、功能与用途 可对各种继电器&#xff08;如电流、电压、反时限、功率方向、阻抗、差动、低周、同期、频率、直流、中间、时间等&#xff09;及微机保护进行检定&#xff0c;并可模拟各种复杂的瞬时性、转换性故障进行整组试验。 二、主要技术参数 交流电流输出&#xff1a;…

多项目并行,如何用飞项快速获取关键信息与进展?

在企业中&#xff0c;多项目并行是常态。 项目经理身兼数职&#xff0c;既要掌握多个项目的关键信息&#xff0c;也要关注卡点与延期风险&#xff0c;跟踪关键任务进度。但常常存在与多个项目负责人对接信息延迟、环节卡点不清晰、文件繁多凌乱导致效率底下的问题。 今天就来…

这可能是你看过最详细的Java集合篇【一】—— ArrayList

文章目录 List集合的特点List集合常见实现类继承关系ArrayList继承关系数据结构和相关变量构造方法添加元素相关方法动态扩容机制 查找元素相关方法删除元素相关方法清空方法遍历方法其它方法常见面试题 List集合的特点 List集合的特点&#xff1a;存储元素有序、可重复、有索…

Shiro 实战教程(全)

目录 1.权限的管理 1.1 什么是权限管理 1.2 什么是身份认证 1.3 什么是授权 2.什么是shiro 3.shiro的核心架构 3.1 Subject 3.2 SecurityManager 3.3 Authenticator 3.4 Authorizer 3.5 Realm 3.6 SessionManager 3.7 SessionDAO 3.8 CacheManager 3.9 Cryptogr…

他们是怎么使用上gpt-4的-gpt-4在哪用

为什么有人在使用GPT4 openAI尚未正式发布GPT-4模型&#xff0c;也没有公布任何与GPT-4相关的信息。因此&#xff0c;没有人可以在使用GPT-4模型。 值得注意的是&#xff0c;虽然OpenAI尚未正式发布GPT-4&#xff0c;但由于其之前发布的GPT-3具有出色的性能和功能&#xff0c…

JVM 垃圾回收算法

之前说堆内存中有垃圾回收&#xff0c;比如Young区的Minor GC&#xff0c;Old区的Major GC&#xff0c;Young区和Old区 的Full GC。 但是对于一个对象而言&#xff0c;怎么确定它是垃圾&#xff1f;是否需要被回收&#xff1f;怎样对它进行回收&#xff1f;等等这些问题我们还需…

【3. 初学ROS,年轻人的第一个Node节点】

【3. 初学ROS&#xff0c;年轻人的第一个Node节点】 1. 工作空间设置2. 创建Package3. 回访依赖包4. 创建Node节点5. 源码编译6. 运行Node节点7. Node节点完善8. 总结 本教程是B站阿杰视频的笔记 视频地址&#xff1a;https://www.bilibili.com/video/BV1nG411V7HW 超声波传感器…

SqlServer2022安装与配置_并用Navicat连接SqlServer---sqlserver工作笔记0001

首先去下载 SQL Server 下载 | Microsoft https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 首先去下载安装包,这里我们下最新的 下载这个免费版的 可以看到下面有个全功能免费版本下载他 然后点击安装 下载以后安装 选择自定义 然后安装

策略模式——时势造影响

● 策略模式介绍 在软件开发中常常遇到这样的情况&#xff1a;实现某一个功能可以有多种算法或者策略&#xff0c;我们根据实际情况选择不同的算法或者策略来完成该功能。例如&#xff0c;排序算法&#xff0c;可以使用插入排序、归并排序、冒泡排序。 针对这种情况&#xff0c…

机器学习 day09(如何设置学习率α,特征工程,多项式回归)

常见的错误的学习曲线图&#xff08;上方两个&#xff09; 当关于迭代次数的学习曲线图&#xff0c;出现波浪型或向上递增型&#xff0c;表示梯度下降算法出错该情况可由&#xff0c;学习率α过大&#xff0c;或代码有bug导致 常用的调试方法&#xff1a; 选择一个非常非常…