一 先来介绍容器启动后钩子

  1.1  容器启动后钩子,并不是容器启动之后才会执行的操作,而是在容器启动过程中,异步的和容器进行启动的一种钩子它有2种表现形式,包括我们后面提到的容器结束前钩子一样

    • 在一个容器内部执行一条命令
    • 或者向URL发起一个HTTP的get请求

    

  1.2  创建一个带有容器启动后钩子的pod

apiVersion: v1
kind: Pod
metadata:
name: pod-with-poststart-hook
spec:
containers:
- image: luksa/kubia
name: luksa
lifecycle:
postStart:
exec:
command:
- sh
- -c
- "echo 'hook will fail with exit code 20'; sleep 5; exit 20"
  • 这个钩子会在休眠5s之后,以退出码20的形式非0退出
  • 理论上由于这个钩子失败,这个pod最后也无法ready
  • 我们创建完之后,查看下这个pod的状态

  1.3  观察这个pod的事件以及pod的状态


[root@node01 Chapter17]# k get po
     NAME READY STATUS RESTARTS AGE
     pod-with-poststart-hook 0/1 CrashLoopBackOff 1 2m7s

Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 32s default-scheduler Successfully assigned default/pod-with-poststart-hook to node02
Normal Pulling 30s kubelet Pulling image "luksa/kubia"
Normal Pulled 30s kubelet Successfully pulled image "luksa/kubia"
Normal Created 30s kubelet Created container luksa
Normal Started 30s kubelet Started container luksa
Warning FailedPostStartHook 24s kubelet Exec lifecycle hook ([sh -c echo 'hook will fail with exit code 20'; sleep 5; exit 20]) for Container "luksa" in Pod "pod-with-poststart-hook_default(24c143e9-606d-11eb-802a-5254002a5691)" failed - error: command 'sh -c echo 'hook will fail with exit code 20'; sleep 5; exit 20' exited with 20: , message: "hook will fail with exit code 20\n"
Normal Killing 24s kubelet FailedPostStartHook
  • 显示failedpoststarthook状态,应该是容器启动后钩子非0退出
  • 容器状态显示CrashLoopBackOff

二 容器停止前钩子介绍

  2.1  创建一个停止前钩子

apiVersion: v1
kind: Pod
metadata:
name: pod-with-prestop-hook
spec:
containers:
- image: luksa/kubia
name: luksa
lifecycle:
preStop:
httpGet:
port: 8080
path: shutdown
  • 停止前钩子的结果不会影响这个容器是否最后会被停止,但是会在事件中看到一个FailedPreStartHook的告警
  • 一个很不明智的做法是在停止前钩子上面将SIGTERM信息给容器进程,原因是正常的SIGTERM信息没有被容器进程正确的接收到,其实真正的原因是在启动容器的时候开发者用了shell形式,这种形式会将应用交给shell管理,然后shell接收到这个SIGTREM,但是容器进程没有正确接收这个信息,所以正确的做法是使用exec的形式,而不是shell形式
  • 这些钩子针对的对象是容器而不是pod,这一点很重要,需要时刻牢记

kubernets之pod的生命周期容器启动后钩子以及容器结束前钩子的更多相关文章

  1. Kubernetes中资源清单与Pod的生命周期(二)

    一.资源清单 1,定义: 在k8s中一般使用yaml格式的文件来创建符合我们预期的资源,这样的yaml被称为资源清单. 使用资源清单创建Pod: kubectl apply -f nginx.yaml ...

  2. Pod 的生命周期

    上图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要部分,接下来我们就来分别介绍影响 Pod 生命周期的部分: 首先在介绍 Pod ...

  3. k8s之pod的生命周期

    pod生命周期 和一个个独立的应用容器一样,Pod 也被认为是相对临时性(而不是长期存在)的实体. Pod 会被创建.赋予一个唯一的 ID(UID),并被调度到节点,并在终止(根据重启策略)或删除之前 ...

  4. Activity的生命周期和启动模式

    Activity的生命周期分析 典型情况下的生命周期.是指在用户参与的情况下,Activity所经过的生命周期的改变. 异常情况下的生命周期.是指Activity被系统回收或者由于当前设备的Confi ...

  5. Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式

    Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...

  6. Android Activity生命周期及启动模式

    曾经搞过许多东西,再熟练的东西一段时间没有碰都会生疏或忘记.后来体会到写成文档记录下来的重要性,但有些word或ppt记录下来的东西随着时间流逝会丢失,或者不愿去看.或许保存成博客的形式,会是更好的选 ...

  7. Android开发艺术探索(一)——Activity的生命周期和启动模式

    Activity的生命周期和启动模式 生命周期有? 1.典型情况下的生命周期—>指有用户参与的情况下,Activity所经过的生命周期改变 2.异常情况下的生命周期—>指Activity被 ...

  8. 《Android开发艺术探索》读书笔记 (1) 第1章 Activity的生命周期和启动模式

    第1章 Activity的生命周期和启动模式 1.1 Activity生命周期全面分析 1.1.1 典型情况下生命周期分析(1)一般情况下,当当前Activity从不可见重新变为可见状态时,onRes ...

  9. Android查缺补漏--Activity生命周期和启动模式

    一.生命周期 onCreate():启动Activity时,首次创建Activity时回调. onRestart():再次启动Activity时回调. onStart():首次启动Activity时在 ...

  10. Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解

    前言 大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢 Activity是什么 作为一个Activ ...

随机推荐

  1. 使用Apache POI和Jsoup将Word文档转换为HTML

    简介 在现代办公环境中,Word文档和HTML页面都是常见的信息表达方式.有时,我们需要将Word文档转换为HTML格式,以便在网页上展示或进行进一步的处理.本文将介绍如何使用Apache POI库和 ...

  2. 浅析eTS的起源和演进

    原文:https://mp.weixin.qq.com/s/N2RPeboN8Fj0-8wBMZJ-7w,点击链接查看更多技术内容. 引言 Mozilla创造了JS,Microsoft创建了TS,Hu ...

  3. centos7.2 利用yum安装配置apache2.4多虚拟主机

    centos7.2 利用yum安装配置apache2.4多虚拟主机 标签: centosapacheyum 2017-01-10 21:01  3175人阅读  评论(0)  收藏  举报   分类: ...

  4. sass 基本常识

    一.什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常的一 ...

  5. Python阿里云消息推送调用API

    很多公司测试APP推送时候,应该也是很头疼:推送环境:测试.正式,稍不注意就把测试的push到正式上,导致所有用户都收到 例子很多: 其实阿里.极光都有推送Api,直接调用API就ok,特别是有的公司 ...

  6. 如何可视化编写和编排你的 K8s 任务

    简介: 通过任务调度 SchedulerX 来调度你的 K8s 任务,能够降低学习成本,加快开发效率,让你的任务失败可报警,出问题可排查,打造云原生可观测体系下的可视化 K8s 任务. 作者:学仁   ...

  7. InnoDB之UNDO LOG介绍

    简介: undo log是InnoDB事务特性的重要组成部分.当对记录做增删改操作就会产生undo记录,undo记录会记录到单独的表空间中. 本文将从代码层面对undo log进行一个简单的介绍:主要 ...

  8. 【USENIX ATC】支持异构GPU集群的超大规模模型的高效的分布式训练框架Whale

    简介: 高效大模型训练框架Whale(EPL)入选USENIX ATC 作者:张杰.贾贤艳 近日,阿里云机器学习PAI关于深度学习模型高效的分布式训练框架的论文< Whale: Efficien ...

  9. 阿里云 EventBridge 事件驱动架构实践

    ​简介:我们认为 EventBridge 是云原生时代新的计算驱动力,这些数据可以驱动云的计算能力,创造更多业务价值. 作者:周新宇 本文内容整理自 中国开源年会 演讲 首先做一个自我介绍,我是 Ro ...

  10. LlamaIndex 常见问题解答(FAQ)

    提示:如果您尚未完成,请安装 LlamaIndex 并完成起步教程.遇到不熟悉的术语时,请参考高层次概念部分. 在这个章节中,我们将从您为起步示例编写的代码开始,展示您可能希望针对不同应用场景对其进行 ...