全栈工程师开发手册 (作者:栾鹏)
架构系列文章


lifecycle

创建资源对象时,可以使用lifecycle来管理容器在运行前和关闭前的一些动作。

lifecycle有两种回调函数:

  • PostStart:容器创建成功后,运行前的任务,用于资源部署、环境准备等。
  • PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等等。

例1、部署代码

以下示例中,定义了一个Pod,包含一个JAVA的web应用容器,其中设置了PostStart和PreStop回调函数。即在容器创建成功后,复制/sample.war到/app文件夹中。而在容器终止之前,发送HTTP请求到http://monitor.com:8080/waring,即向监控系统发送警告。

具体示例如下:

......
containers:
- image: sample:v2  name: warlifecycle:postStart:exec:command:- “cp”- “/sample.war”- “/app”prestop:httpGet:host: monitor.compsth: /waringport: 8080scheme: HTTP
......

例2、优雅删除资源对象

当用户请求删除含有pod的资源对象时(如RC、deployment等),K8S为了让应用程序优雅关闭(即让应用程序完成正在处理的请求后,再关闭软件),K8S提供两种信息通知:

1)、默认:K8S通知node执行docker stop命令,docker会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间,或者默认超时时间(30s),会继续发送SIGKILL的系统信号强行kill掉进程。

2)、使用pod生命周期(利用PreStop回调函数),它执行在发送终止信号之前。
默认情况下,所有的删除操作的优雅退出时间都在30秒以内。kubectl delete命令支持--grace-period=的选项,以运行用户来修改默认值。0表示删除立即执行,并且立即从API中删除pod这样一个新的pod会在同时被创建。在节点上,被设置了立即结束的的pod,仍然会给一个很短的优雅退出时间段,才会开始被强制杀死。

具体示例如下:

kind: Deployment
metadata:name: nginx-demolabels:app: nginx-demo
spec:replicas: 1template:metadata:labels:app: nginx-demospec:containers:- name: nginx-demoimage: centos:nginxlifecycle:preStop:exec:# nginx -s quit gracefully terminate while SIGTERM triggers a quick exitcommand: ["/usr/local/nginx/sbin/nginx","-s","quit"]ports:- name: httpcontainerPort: 80

参考:https://my.oschina.net/lykops/blog/1616577

kubernetes--pod的生命周期管理(PostStart,PreStop)相关推荐

  1. Kubernetes pod的生命周期

    本文翻译自:Kubernetes: Lifecycle of a Pod 原文出处:Kubernetes: Lifecycle of a Pod - DZone Integration 参考:Cont ...

  2. Kubernetes CKA认证运维工程师笔记-Kubernetes应用程序生命周期管理

    Kubernetes CKA认证运维工程师笔记-Kubernetes应用程序生命周期管理 1. 在Kubernetes中部署应用流程 2. 使用Deployment部署Java应用 2.1 Pod与D ...

  3. kubernetes Pod Lifecycle生命周期与livenessProbe、 readinessProbe探测方法

    kuberenetes pod Liveness, Readiness and Startup Probes tags: Pod,探针,健康检测 文章目录 kuberenetes pod Livene ...

  4. Kubernetes Pod的生命周期(Lifecycle)

    文章目录 Pod Lifecle Pod的阶段:Pod phase 容器的状态:Container states 容器的探针:Container probes 重启策略:restartPolicy P ...

  5. Kubernetes中Sidecar生命周期管理

    背景 在多个容器的Pod中,通常业务容器需要依赖sidecar.启动时sidecar需要先启动,退出时sidecar需要在业务容器退出后再退出.k8s目前对于sidecar的生命周期比较有争议,见is ...

  6. k8s的Pod状态和生命周期管理

    Pod状态和生命周期管理 一.什么是Pod? 二.Pod中如何管理多个容器? 三.使用Pod 四.Pod的持久性和终止 五.Pause容器 六.init容器 七.Pod的生命周期 (1)Pod pha ...

  7. Mirantis决定采用Kubernetes作为 Openstack的生命周期管理工具

    Mirantis是OpenStack的主要贡献者,今天他宣布将使用Kubernetes作为底层编排引擎重写其私有云平台.我们认为这是推进OpenStack和Kubernetes 社区伟大的一步. Op ...

  8. npm scripts的生命周期管理

    2019独角兽企业重金招聘Python工程师标准>>> 我们平时阅读一些开源项目,可能会发现有些项目的package.json里的scripts区域定义的脚本很复杂,令人眼花缭乱. ...

  9. Eolink神技之二、API全生命周期管理

    Eolink神技之二.API全生命周期管理 目录 Eolink神技之二.API全生命周期管理 Eolink全API全生命周期管理解决的问题 演示过程 一.创建项目文档 1.1.创建项目 1.2.项目管 ...

最新文章

  1. Deep learning调参经验
  2. (转)利用Ant与Proguard混淆引用的子工程项目jar包及打war包
  3. 再见,CentOS!
  4. Hyper-V 2016 系列教程48 Windows Server Backup 一次性备份操作
  5. linux下使用lftp的小结
  6. 索引的概念和创建索引例子
  7. PMP - 2011年6月考前辅导班
  8. 【数据库系统】SQL视图与表的区别和联系
  9. 矩池云上使用nohup和让任务后台运行
  10. vue-cli 打包出来的文件缺少_Vue cli构建 及 项目打包以及出现的问题 (update 2020-05)...
  11. SQL Server 之 修改时不允许保存更改
  12. 《每日一题》NO.23:谈谈对数字集成电路工艺的认识
  13. 为什么说继承是把双刃剑
  14. AppImage应用启动报错:Cannot mount AppImage, please check your FUSE setup
  15. 史上最全JVM重点知识总结
  16. 计算机网络 互联网模拟实验
  17. hadoop3.3.0 编译环境搭建
  18. java的发展历史 现状
  19. 解决mac excel中文乱码的问题
  20. 2年Java开发需要具有什么水平?

热门文章

  1. 学完python能做什么-学完Python后能做什么?
  2. 语音识别哪个软件好,教你三种不同的识别方法
  3. 百度AI语音语义一体化技术 识别的同时进行语义分析
  4. 快速排序以及荷兰国旗问题
  5. python 识别子串的位置_Python基础语法小白这一篇就足够了!
  6. HTML-图像,音频,视频和路径
  7. 退出登入的php怎么写,php中退出登录怎么写
  8. 【Spring笔记】Spring配置
  9. 【java笔记】StringBuilder类
  10. 笔记本电脑如何保养_笔记本电脑过热 五招教你轻松解决