深入Pod —— 生命周期 及 PreStop事件的应用
1.K8S基础2.搭建 Kubernetes 集群 —— 搭建方案 kubeadm3.搭建 Kubernetes 集群 —— 命令行工具 kubectl4.搭建 Kubernetes 集群 —— API 概述5.深入Pod —— 配置文件6.深入Pod —— 探针
7.深入Pod —— 生命周期 及 PreStop事件的应用
8.资源调度 —— Label 和 Selector:标签和选择器9.资源调度 —— Deployment(针对部署的无状态应用)10.资源调度 —— StatefulSet(针对部署的有状态应用)11.资源调度 —— DaemonSet:守护进程应用场景(Fluent日志收集程序)12.资源调度 —— HPA:Pod基于负载指标自动水平扩容 / 缩容13.服务发现 —— Service(主要用于服务内的网络共享)14.服务发现 —— Ingress(用于外部服务的发现和统一入口)15.配置与存储 —— 配置管理16.配置与存储 —— 持久化存储17.高级调度 —— CronJob计划任务、初始化容器 InitContainer18.高级调度 —— 污点、容忍19.高级调度 —— 亲和力(Affinity)20.身份认证与权限21.Helm 包管理器
一、生命周期
lifecycle:
postStart: # 容创建完成后执行的动作,不能保证该操作一定在容器的 command 之前执行,一般不使用
exec: # 可以是 exec / httpGet / tcpSocket
command:
- sh
- -c
- 'mkdir /data'
preStop: # 在容器停止前执行的动作
httpGet: # 发送一个 http 请求
path: /
port: 80
exec: # 执行一个命令
command:
- sh
- -c
- sleep 9
二、流程
1、容器环境初始化阶段
0个或多个初始化容器来帮我们进行初始化,只能初始化容器执行完了才算初始化完成
2、钩子回调函数
postStart(),启动之前需要做什么,注意:一般不用这个,因为可能 容器中的command 和 postStart() 执行顺序无法保证,工作中如果启动前要做什么,就直接用初始化容器
3、Pod内的主容器
3.1、Startup 启动探针(最开始监控)
3.2、Readiness 就绪探针(最开始监控),启动成功就绪
3.3、Liveness 存活探针(持续监控),如果当前容器挂掉了,根据重启策略决定是否需要重启
4、钩子回调函数
preStop(),容器退出之前需要做什么,如:销毁,日志
三、Pod 退出流程(删除操作)
1、Endpoint 删除 pod 的 ip 地址
2、Pod 变成 Terminating 状态
pod 变为删除中的状态后,会给 pod 一个宽限期,让 pod 去执行一些清理或销毁操作。
配置参数:
# 作用与 pod 中的所有容器
terminationGracePeriodSeconds: 30
containers:
- xxx
3、执行 preStop 的指令
四、PreStop 的应用
如果应用销毁操作耗时需要比较长,可以在 preStop 按照如下方式进行配置
preStop:
exec:
command:
- sh
- -c
- 'sleep 20; kill pgrep java'
但是需要注意,由于 k8s 默认给 pod 的停止宽限时间为 30s,如果我们停止操作会超过 30s 时,不要光设置 sleep 50,还要将 terminationGracePeriodSeconds: 30 也更新成更长的时间,否则 k8s 最多只会在这个时间的基础上再宽限几秒,不会真正等待 50s
1、注册中心下线
2、数据清理
3、数据销毁
合集:
Kubernetes
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)