pod生命周期和pod的优雅终止

pod优雅终止

概念:当一个pod需要被终止时,系统会给予一定的时间窗口让pod内的应用程序完成正在处理的任务并安全地关闭,而不是立即强制终止。这样可以避免因突然终止而导致的数据丢失或服务中断

1. 发送终止信号

  • 当一个 pod 被删除或终止时,Kubernetes 首先会向 pod 中的容器发送一个 TERM 信号(SIGTERM),通知它们即将被终止。

2. 等待终止宽限期

  • 接收到 TERM 信号后,容器有一定的时间来执行清理工作,如保存状态、完成当前请求等。这个时间由 terminationGracePeriodSeconds(终止宽限期) 参数指定,默认为 30 秒。

3 .容器的优雅终止

  • 容器在收到 SIGTERM 后应尽快处理未完成的任务,然后自行退出。如果在 terminationGracePeriodSeconds 内容器未能自行退出,Kubernetes 会发送 KILL 信号(SIGKILL),强制终止容器。

4. 停止接收流量

  • 在发出 TERM 信号后,Kubernetes 会停止向该 pod 路由新的请求。对于使用服务(Service)的 pod,这个过程可能会涉及从负载均衡器中移除 pod 的地址。

5. 清理资源

  • 当所有容器都终止后,Kubernetes 将从集群中移除 pod,并释放与其相关的所有资源(如网络、存储等)。

lifecycle定义pod生命周期

postStart 是在容器创建后执行的钩子函数,执行的时机是在容器启动后,用户定义的进程开始运行之前。常见的使用场景包括但不限于:

  • 初始化任务:例如,为容器中的应用程序创建配置文件或数据库表

  • 设置环境:为容器的应用程序准备环境,如初始化网络、存储或依赖服务

  • 健康检查:执行容器启动前的自定义健康检查

如果 postStart 钩子执行成功,容器进程才会正常启动。如果钩子执行失败,容器将被标记为启动失败,并且 Kubernetes 会按照重启策略进行处理。postStart 钩子可以是同步或异步的。如果是同步的,它会阻塞容器的主进程直到钩子执行完毕。如果是异步的,容器的主进程将在钩子执行过程中启动

关键配置如下:

# 启动前做什么事
lifecycle:postStart:exec:command: - "/bin/sh"- "-c"- "sleep 10;echo \"postStart at $(date +%F_%T)\" >> /data/postStart.log"# 删除前做什么事,注意不要超过期限,否则对应命令无法执行成功preStop:exec:command: - "/bin/sh"- "-c"- "sleep 15;echo \"preStop at $(date +%F_%T)\" >> /data/preStop.log"

1.完整配置文件:

apiVersion: v1
kind: pod
metadata:name: lifecycle-poststart-prestop-001
spec:volumes:- name: datahostPath:path: /zhiyong18-linux# 在pod优雅终止时,定义延迟发送kill信号的时间,此时间可用于pod处理完未处理的请求等状况。# 默认单位是秒,若不设置默认值为30s。terminationGracePeriodSeconds: 3containers:- name: c1image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1volumeMounts:- name: datamountPath: /data# 定义容器的生命周期。lifecycle:# 容器启动之后做的事情postStart:exec:command: - "/bin/sh"- "-c"- "sleep 10;echo \"postStart at $(date +%F_%T)\" >> /data/postStart.log"# 容器停止之前做的事情preStop:exec:command: - "/bin/sh"- "-c"- "sleep 15;echo \"preStop at $(date +%F_%T)\" >> /data/preStop.log"

2.创建和删除pod之后会留下2个文件

[root@worker232zhiyong18-linux]# cat /zhiyong18-linux/postStart.log 
postStart at 2024-09-27_14:26:54
[root@worker232zhiyong18-linux]# cat /zhiyong18-linux/preStop.log 
preStop at 2024-09-27_14:27:07

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

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

相关文章

【SpringMVC】SpringMVC 快速入门

通常,Web 应用的工作流程如下: 用户通过浏览器访问前端页面; 前端页面通过异步请求向后端服务器发送数据; 后端采用“表现层-业务层-数据层”三层架构进行开发: 表现层接收页面请求将请求参数传递给业务层业务层访问…

OpenGL变换矩阵和输入控制

在前面的文章当中我们已经成功播放了动画,让我们的角色动了起来,这一切变得比较有意思了起来。不过我们发现,角色虽然说是动了起来,不过只是在不停地原地踏步而已,而且我们也没有办法通过键盘来控制这个角色来进行移动…

【Spring MVC 核心机制】核心组件和工作流程解析

在 Web 应用开发中,处理用户请求的逻辑常常会涉及到路径匹配、请求分发、视图渲染等多个环节。Spring MVC 作为一款强大的 Web 框架,将这些复杂的操作高度抽象化,通过组件协作简化了开发者的工作。 无论是处理表单请求、生成动态页面&#x…

Verilog 过程赋值

关键词:阻塞赋值,非阻塞赋值,并行 过程性赋值是在 initial 或 always 语句块里的赋值,赋值对象是寄存器、整数、实数等类型。 这些变量在被赋值后,其值将保持不变,直到重新被赋予新值。 连续性赋值总是处…

[并发与并行] python如何构建并发管道处理多阶段任务?

文章目录 1. 背景&目标2. show me the code3.知识点4. 总结 1. 背景&目标 背景:一个任务可分为多个阶段(各个阶段非CPU密集型任务,而是属于IO密集型任务),希望每个阶段能够交给各自的线程去执行。 目标:构建支持多并发的…

07 基于OpenAMP的核间通信方案

引言 ZYNQ7020有两个CPU核心,这两个核心可以采用SMP或AMP方式进行调度,当采用AMP方式进行调度时核0和核1可以运行不同的操作系统,如核0运行Linux系统,提供有些复杂的用户交互工作,核1运行实时操作系统,对设…

7.若依参数设置、通知公告、日志管理

参数设置 对系统中的参数进行动态维护。 关闭验证码校验功能 打开页面注册功能 需要修改前端页面代码 通知公告 促进组织内部信息传递 若依只提供了一个半成品,只实现了管理员可以添加通知公告。 日志管理 追踪用户行为和系统运行状况。 登录日志 和操作日志…

基于Docker+模拟器的Appium自动化测试(二)

模拟器的设置 打开“夜神模拟器”的系统设置,切换到“手机与网络”页,选中网络设置下的“开启网络连接”和“开启网络桥接模式”复选框,而后选择“静态IP”单选框,在IP地址中输入“192.168.0.105”,网关等内容不再赘述…

大数据技术-Hadoop(三)Mapreduce的介绍与使用

目录 一、概念和定义 二、WordCount案例 1、WordCountMapper 2、WordCountReducer 3、WordCountDriver 三、序列化 1、为什么序列化 2、为什么不用Java的序列化 3、Hadoop序列化特点: 4、自定义bean对象实现序列化接口(Writable) 4…

【数据仓库】SparkSQL数仓实践

文章目录 集成hive metastoreSQL测试spark-sql 语法SQL执行流程两种数仓架构的选择hive on spark数仓配置经验 spark-sql没有元数据管理功能,只有sql 到RDD的解释翻译功能,所以需要和hive的metastore服务集成在一起使用。 集成hive metastore 在spark安…

基本算法——回归

本节将通过分析能源效率数据集(Tsanas和Xifara,2012)学习基本的回归算法。我们将基 于建筑的结构特点(比如表面、墙体与屋顶面积、高度、紧凑度)研究它们的加热与冷却负载要 求。研究者使用一个模拟器设计了12种不…

V-Express - 一款针对人像视频生成的开源软件

V-Express是腾讯AI Lab开发的一款针对人像视频生成的开源软件。它旨在通过条件性丢弃(Conditional Dropout)技术,实现渐进式训练,以改善使用单一图像生成人像视频时的控制信号平衡问题。 在生成过程中,不同的控制信号&…

Java与SQL Server数据库连接的实践与要点

本文还有配套的精品资源,点击获取 简介:Java和SQL Server数据库交互是企业级应用开发中的重要环节。本文详细探讨了使用Java通过JDBC连接到SQL Server数据库的过程,包括加载驱动、建立连接、执行SQL语句、处理异常、资源管理、事务处理和连…

学习记录—正则表达式-基本语法

正则表达式简介-《菜鸟教程》 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 本期内容将介绍普通字符,特殊…

企业安装加密软件有什么好处?

加密软件为企业的安全提供了很多便利,从以下几点我们看看比较重要的几个优点: 1、数据保护:企业通常拥有大量的商业机密、客户数据、技术文档等敏感信息。加密软件可以对这些信息进行加密处理,防止未经授权的人员访问。即使数据被…

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率

2024 年度总结系列 2024 年 10 月,京东零售供应链技术团队凭借其在库存选品与调拨技术上的创新与实践,荣获运筹与管理学领域的国际顶级奖项 Daniel H. Wagner Prize。本文为您介绍获奖背后的供应链技术创新和落地应用。 00 摘要 在电商行业中&#x…

大数据技术-Hadoop(二)HDFS的介绍与使用

目录 1、HDFS简介 1.1 什么是HDFS 1.2 HDFS的优点 1.3、HDFS的架构 1.3.1、 NameNode 1.3.2、 NameNode的职责 1.3.3、DataNode 1.3.4、 DataNode的职责 1.3.5、Secondary NameNode 1.3.6、Secondary NameNode的职责 2、HDFS的工作原理 2.1、文件存储 2.2 、数据写…

在 C# 中优化 JPEG 压缩级别和文件大小

此示例可让您检查不同 JPEG 压缩级别的图像质量。使用文件菜单的打开命令加载图像文件。然后使用“JPEG 压缩指数 (CI)”组合框选择压缩级别。程序将图像保存到具有该压缩级别的临时文件中,并显示生成的图像和文件大小。 该程序的关键是以下SaveJpg方法,…

Pandas02

Pandas01: Pandas01 文章目录 内容回顾1 数据的读取和保存1.1 读写Excel文件1.2 读写CSV1.3 读写Mysql 2 DataFrame 数据查询2.1 筛选多列数据2.2 loc 和 iloc2.3 query查询方法和isin 方法 3 DataFrame增 删 改数据3.1 增加一列数据3.2 删除一行/一列数据3.3 数据去重3.4 数据…

Flink定时器

flink的定时器都是基于事件时间(event time)或事件处理时间(processing time)的变化来触发响应的。对一部分新手玩家来说,可能不清楚事件时间和事件处理时间的区别。我这里先说一下我的理解,防止下面懵逼。…