当前位置: 首页 > news >正文

网站目的什么公司做网站最好

网站目的,什么公司做网站最好,wordpress自动添加关键词和描述,wordpress最佳服务器配置0. 参考 Kubernetes容器生命周期 —— 钩子函数详解(postStart、preStop) - 人艰不拆_zmc - 博客园详解Kubernetes Pod优雅退出 - 人艰不拆_zmc - 博客园 1. Kubernetes 生命周期钩子概述 在 Kubernetes 中,生命周期钩子(Lifec…

0. 参考

  • Kubernetes容器生命周期 —— 钩子函数详解(postStart、preStop) - 人艰不拆_zmc - 博客园
  • 详解Kubernetes Pod优雅退出 - 人艰不拆_zmc - 博客园

1. Kubernetes 生命周期钩子概述

在 Kubernetes 中,生命周期钩子(Lifecycle Hooks) 是容器启动和终止时执行的自定义操作。它们允许你在容器的生命周期中插入“定制逻辑”,比如初始化、资源清理、通知外部系统等。

Kubernetes 为每个容器提供两个主要的生命周期钩子(hooks):

生命周期钩子触发时机作用示例
postStart容器启动完成后立即日志初始化、加载缓存、通知系统
preStop容器被终止前优雅下线、关闭连接、清理资源等

2. 使用示例

lifecycle:postStart:exec:command: ["/bin/sh", "-c", "echo Container started at $(date) >> /var/log/start.log"]preStop:exec:command: ["/bin/sh", "-c", "echo Shutting down >> /var/log/shutdown.log && sleep 10"]

3. 生命周期流程图(简化)

Pod 创建└──> 容器启动└──> postStart Hook└──> 运行主进程...└──> SIGTERM (优雅终止)└──> preStop Hook└──> 容器停止

4. 应用场景举例

Hook 类型应用场景
postStart- 通知注册中心上线 - 初始化缓存 - 自定义日志记录
preStop- 通知下游服务断开连接 - 等待请求处理完毕 - 注销注册中心

5. 注意事项

  • 两个钩子都 运行在容器内,使用 exec
  • postStart阻塞容器运行(直到命令完成);若失败会导致容器崩溃。
  • preStop 默认最多等待 30 秒(由 terminationGracePeriodSeconds 控制)。
  • 不能保证 preStop 一定成功执行(例如容器被 kill -9)

6. 总结理解

生命周期钩子 = 容器级别的定制启动/退出脚本,用于插入优雅上线、下线、清理、注册、通知等逻辑,是构建高可用服务的重要工具之一。

7. 示例1

✅ 目标场景

当容器被终止时,执行以下步骤:

  1. 通知外部系统(通过 curl 发出“下线”请求)
  2. 等待 5 秒,让请求完成
  3. 再由 Kubernetes 终止容器

🧩 示例:使用 preStop 实现优雅下线

apiVersion: apps/v1
kind: Deployment
metadata:name: graceful-shutdown-demo
spec:replicas: 1selector:matchLabels:app: graceful-demotemplate:metadata:labels:app: graceful-demospec:terminationGracePeriodSeconds: 10  # 容器 SIGTERM 后有最多 10 秒来执行 preStopcontainers:- name: appimage: busyboxcommand: ["/bin/sh", "-c", "while true; do echo 'Running...'; sleep 5; done"]lifecycle:preStop:exec:command:- /bin/sh- -c- |echo "[preStop] Notifying external system..."curl -X POST http://example.com/deregister -d 'pod=graceful-demo'echo "[preStop] Waiting for in-flight requests to complete..."sleep 5

🔍 关键点说明

字段/参数含义
preStop.exec.command容器内执行 shell 脚本,通知外部系统并等待
terminationGracePeriodSeconds容器被终止前最大等待时间(默认 30 秒)
curl -X POST模拟通知外部系统(如服务注册中心)
sleep 5给上游时间处理关闭流程,确保不中断服务

8. 示例2

✅ 示例:包含 postStartpreStop 的容器

yaml复制编辑
apiVersion: v1
kind: Pod
metadata:name: lifecycle-demo
spec:terminationGracePeriodSeconds: 15  # 为 preStop 提供充足时间containers:- name: demo-containerimage: busyboxcommand: ["/bin/sh", "-c", "echo 'App running...'; sleep 3600"]lifecycle:postStart:exec:command:- /bin/sh- -c- |echo "[postStart] Initializing container..." >> /tmp/startup.logdate >> /tmp/startup.logpreStop:exec:command:- /bin/sh- -c- |echo "[preStop] Cleaning up before shutdown..." >> /tmp/shutdown.logsleep 5  # 模拟等待资源释放或通知外部系统

🧠 解释每一部分

🔹 postStart
  • 触发时机:容器启动完成后立即执行
  • 作用
    • 可做初始化动作,如写日志、预热缓存、启动守护进程等
  • 示例逻辑
    • /tmp/startup.log 记录“启动”信息和时间戳
🔹 preStop
  • 触发时机:容器收到终止信号(如删除 Pod 或更新镜像)前执行
  • 作用
    • 用于优雅下线,如关闭连接、注销注册、等待请求处理完毕等
  • 示例逻辑
    • 写一条“即将关闭”的日志
    • sleep 5 模拟清理或等待请求完成
⏱️ terminationGracePeriodSeconds
  • 告诉 Kubelet:给容器最多 15s 时间完成 preStop
  • preStop 没完成,时间一到仍会强制终止容器
http://www.dtcms.com/a/596551.html

相关文章:

  • VS2026+QT6.9+ONNX+OPENCV+YOLO11(目标检测)(详细注释)(附测试模型和图像)
  • RestTemplate 和 Apache HttpClient 实现 HTTP 请求
  • Lua 变量
  • 国外网站设计模板百度引擎搜索
  • css波浪线和着重号效果
  • Ansible 任务控制全面解析
  • 昇腾CANN训练营 学习(day4)Ascend C算子开发全流程深度解析:从环境准备到异构计算部署
  • 谷歌发布 Veo 3.1 视频生成模型:有声电影、长视频叙事与人物定制的实测与展望
  • 有做a50期货的网站青岛网站建设方案书
  • 2.10 实践练习:训练一个意图识别模型并部署为 API
  • 数据结构精讲:从零到一搞懂队列与循环队列的底层实现
  • 微信小程序开发案例 | 幸运抽签小程序(下)
  • 如何在 Windows 电脑上调试 iOS 设备上的 Safari?完整方案与实战经验分享
  • 密度聚类调参精讲
  • 场馆预约小程序拓展功能分析:技术赋能下的效率革命与商业破局
  • 【开题答辩全过程】以 二手小型电子产品商城小程序为例,包含答辩的问题和答案
  • 怎么查百度收录网站网站建设代码生成器
  • 网站建设科技建盏大师排名与落款
  • 【面经 每日一题】面试题16.25.LRU缓存(medium)
  • 网站推广常用的方法seo搜索引擎优化视频
  • XML的了解
  • 开源制品管理工具Hadess,一键安装及快速入门教程
  • 【云运维】Python基础(三)
  • MyBatis-Plus 进阶实战:不用写 XML,CRUD + 复杂查询像 “点奶茶” 一样简单
  • 野狗算法详细原理,野狗算法公式,野狗算法求解目标函数极值
  • V-Ray 渲染高效优化指南
  • 商丘网站建设的公司哪家好菏泽网站建设
  • RobotFramework框架基本功能语法
  • 120. 三角形最小路径和
  • Redis(116)Redis的内存管理如何实现?