Go 服务优雅停机:K8s 发 SIGTERM 后不是立刻消失

发布时间:2026/7/9 21:51:56

Go 服务优雅停机:K8s 发 SIGTERM 后不是立刻消失
Go 服务优雅停机K8s 发 SIGTERM 后不是立刻消失Go 服务部署在 K8s 后优雅停机经常被忽略。Pod 被滚动更新时会收到 SIGTERM如果服务没有停止接收新请求、等待进行中请求结束、关闭连接池就可能产生一批莫名其妙的 502 或处理中断。优雅停机不是形式主义它决定发布时用户是否被无辜打断。一、停机链路要清楚flowchart TD A[K8s SIGTERM] -- B[Stop Accepting] B -- C[Drain Requests] C -- D[Close Resources] D -- E[Exit]K8s 不会读心。应用收到信号后需要自己处理生命周期。二、Go HTTP Server 支持 Shutdownsrv : http.Server{Addr: :8080, Handler: router} go func() { if err : srv.ListenAndServe(); err ! http.ErrServerClosed { log.Fatal(err) } }() ctx, cancel : context.WithTimeout(context.Background(), 20*time.Second) defer cancel() _ srv.Shutdown(ctx)Shutdown会停止接收新连接并等待已有请求完成直到 context 超时。三、K8s 配置要配合terminationGracePeriodSeconds: 30 lifecycle: preStop: exec: command: [sh, -c, sleep 5]preStop 可以给负载均衡摘流量一点时间。具体配置要结合网关和服务发现机制测试。四、长请求要有上限如果请求可能跑几分钟停机就会拖很久。服务应该设置请求超时并对长任务异步化。shutdown_policy: max_request_time: 15s async_jobs: resumable force_exit_after: 30s优雅停机不是无限等待。超过窗口仍要退出否则发布会卡住。还要处理 readiness。收到 SIGTERM 后可以先让 readiness 失败让流量入口停止转发再等待已有请求完成。var shuttingDown atomic.Bool func readiness(w http.ResponseWriter, r *http.Request) { if shuttingDown.Load() { w.WriteHeader(http.StatusServiceUnavailable) return } w.WriteHeader(http.StatusOK) }这样服务不是一边准备退出一边继续接新请求。生命周期信号要和探针配合。五、总结Go 服务在 K8s 中要处理 SIGTERM、停止接收新请求、等待已有请求、关闭资源并与 terminationGracePeriod 和 preStop 配合。Pod 不是立刻消失但也不会永远等你。生命周期写清楚滚动发布才真的平滑。上线前可以做一次演练压测中滚动发布观察 5xx、请求耗时和连接关闭情况。优雅停机只有被验证过才不是纸面配置。

相关新闻

如何免费永久使用IDM:开源激活脚本的完整解决方案

如何免费永久使用IDM:开源激活脚本的完整解决方案

2026/7/7 15:13:37

如何免费永久使用IDM:开源激活脚本的完整解决方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 你是否厌倦了Internet Download Manager&#xff0…

如何轻松获取网页视频资源:开源媒体嗅探工具的完整指南

如何轻松获取网页视频资源:开源媒体嗅探工具的完整指南

2026/7/8 8:32:03

如何轻松获取网页视频资源:开源媒体嗅探工具的完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经在网上看到一个精彩的…

Adobe Downloader:macOS上一键获取Adobe全家桶的终极下载工具

Adobe Downloader:macOS上一键获取Adobe全家桶的终极下载工具

2026/7/7 18:26:09

Adobe Downloader:macOS上一键获取Adobe全家桶的终极下载工具 【免费下载链接】Adobe-Downloader macOS Adobe apps download & installer 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-Downloader 还在为获取Adobe软件而烦恼吗?Adobe…

电力系统潮流估算实战:辐射型网络3步迭代法,误差收敛条件解析

电力系统潮流估算实战:辐射型网络3步迭代法,误差收敛条件解析

2026/7/9 21:50:37

电力系统潮流估算实战:辐射型网络3步迭代法,误差收敛条件解析在电力系统分析与规划中,潮流计算是确保电网安全稳定运行的核心技术。对于辐射型网络这类常见配电结构,掌握高效的迭代求解方法不仅能提升工程计算效率,更能…

Spring Boot+Vue3汽车租赁系统:从环境搭建到功能测试全流程实战

Spring Boot+Vue3汽车租赁系统:从环境搭建到功能测试全流程实战

2026/7/9 21:50:37

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个基于 Spring Boot 和 Vue3 的汽车租赁系统。对于计算机专业的学生或者需要快速搭建一个具备完整业务流程的 Web 应用…

memory-scan实战教程:监控进程内存访问的完整指南

memory-scan实战教程:监控进程内存访问的完整指南

2026/7/9 21:50:37

memory-scan实战教程:监控进程内存访问的完整指南 【免费下载链接】memory-scan A kernel module for scaning page table of process/VMs 项目地址: https://gitcode.com/openeuler/memory-scan 前往项目官网免费下载:https://ar.openeuler.org/…

Python scikit-learn 1.4 实战:3种聚类算法(系统/动态/有序)核心差异与代码对比

Python scikit-learn 1.4 实战:3种聚类算法(系统/动态/有序)核心差异与代码对比

2026/7/9 21:50:37

Python scikit-learn 1.4 实战:3种聚类算法核心差异与代码对比在数据科学领域,聚类分析是最常用的无监督学习技术之一。不同于分类问题,聚类算法不需要预先标记的训练数据,而是通过发现数据中的自然分组来揭示隐藏的模式。本文将聚…

Agent可交付设计:从OpenClaw配置到审批流可视化

Agent可交付设计:从OpenClaw配置到审批流可视化

2026/7/9 21:50:37

1. 项目概述:从“我用着顺手”到“别人也能开箱即用”,Agent 交付的本质不是功能堆砌,而是体验封装“我自己用的 Agent 挺好,怎么变成别人也能用的?”——这句话背后藏着一个被严重低估的现实:90% 的 Agent…

工业信号干扰解决方案与光耦选型实践

工业信号干扰解决方案与光耦选型实践

2026/7/9 21:40:37

1. 工业环境中的信号干扰挑战在电机控制、PLC系统或自动化产线等工业场景中,电子设备常面临严峻的电磁环境。变频器、大功率继电器和无线设备产生的电磁噪声,可能使信号传输出现以下典型问题:数字信号边沿抖动(上升/下降时间劣化&…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/8 14:04:34

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

平价正宗重庆火锅实测|理性避坑选型指南

平价正宗重庆火锅实测|理性避坑选型指南

2026/7/9 0:09:12

一、引言:重庆火锅消费现存痛点当下大众平价川渝火锅赛道竞争白热化,普通消费者就餐普遍面临三大选型难题:一是口味同质化严重,大量门店采用预制锅底、半成品食材,打着重庆老火锅旗号弱化牛油本味,麻辣口感…

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

2026/7/9 0:09:12

AcFunDown:打破A站视频离线观看壁垒的终极解决方案 【免费下载链接】AcFunDown 包含PC端UI界面的A站 视频下载器。支持收藏夹、UP主视频批量下载 😳仅供交流学习使用喔 项目地址: https://gitcode.com/gh_mirrors/ac/AcFunDown 想象一下这样的场景…

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

2026/7/9 0:09:12

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…