k8s lifecycle——poststart和prestop

2023-10-27

1、lifecycle的声明

    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "sleep 100"]
      preStop:
        exec:
          command: ["/bin/sh", "-c", "sleep 100"]

在这里插入图片描述

2、poststart

容器创建后立即执行,主要用于资源部署、环境准备等

2.1 时序

当前container创建后发送钩子命令
发送后:

  • pod是pending状态
  • container是waiting状态
    执行完成后:
  • 执行成功:pod会变为running状态,这时会被分配IP
  • 执行失败:容器重启,如果poststart执行完之前container退出也会重启

2.2 command&args 与 postart 优先级

没有优先级关系,基本会同时执行

3、prestop

容器终止之前立即被调用。主要用于优雅关闭应用程序、通知其他系统等

3.1 时序

触发kill pod:

  • 执行prestop钩子
  • terminationGracePeriodSeconds计时
  • pod状态变为terminating
    在terminationGracePeriodSeconds时间内:prestop执行,执行完成后,向 pod 发送SIGTERM信号,pod将会进行业务进程停止过程;如果执行失败,event中会看到报错
    超出terminationGracePeriodSeconds时间:杀死容器

在某些极端情况下,Pod 被删除的一小段时间内,仍然可能有新连接被转发过来,因为 kubelet 与 kube-proxy 同时 watch 到 Pod 被删除,kubelet 有可能在 kube-proxy 同步完规则前就已停止容器,这时可能导致一些新的连接被转发到正在删除的 Pod,而通常情况下,当应用收到 SIGTERM 后都不再接受新连接,只保持存量连接继续处理,因此可能导致 Pod 删除的瞬间部分请求失败。

针对上述情况,可以利用 preStop 先 sleep 短暂时间,等待 kube-proxy 完成规则同步再开始停止容器内进程。
参考:https://www.tencentcloud.com/zh/document/product/457/42069

4、题外话:

command&args 与 dockerfile中entrypoint&cmd关系

一一对应,container中的优先级高于dockerfile中优先级

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s lifecycle——poststart和prestop 的相关文章

随机推荐

  • c# 获取machineguid_C#正则表达式获取guid(亲测完美解决代码)

    前言 代码亲自测试过 放心使用 完美解决 网上很多文章都没有写清楚 到底是从一段字符串中截取其中的guid 还是判断一段字符串到底是不是guid GUID格式 由三十二位数字和字母组成 8位 4位 4位 4位 12位 c 使用正则表达式从一
  • DL(五)利用softmax线性分类器对线性不可分数据进行分类

    下面为代码 Train a Linear Classifier import numpy as np import matplotlib pyplot as plt np random seed 0 N 100 number of poin
  • Go基础(复杂类型):指针

    Go语言指针 Go 具有指针 指针保存了变量的内存地址 类型 T 是指向类型 T 的值的指针 其零值是 nil var p int 符号会生成一个指向其作用对象的指针 i 42 p i 符号表示指针指向的底层的值 fmt Println p
  • 算法和数据结构的学习之路

    推荐网站 LeetCode 牛客网 Visualgo net 推荐入门书籍 小灰算法 1 入门基础算法知识 2 面试常见算法题
  • python 生成巨大的excel表格xlsxwriter

    原来我是用xlwt来生成excel的 生成的后缀名为xls 但是由于数据太多于是报了个 ValueError row index 65536 not an int in range 65536 错误 原因是 在xlwt中生成的xls文件最多
  • Maven 项目之pom.xml 提示Unknow Error

    今天学习如何搭建SpringCloud 基础项目 pom xml 文件提示Unknow Error 异常 尝试解决办法 我更想maven 项目依赖 检查maven 项目所依赖的jar 包是否正常下载到本地仓库 但都没有解决该问题 经过goo
  • Oracle Data Pump 使用expbp 和 impdp 导出和导入

    预备 创建dmp文件存放文件夹 不创建后面会发生错误 mkdir p opt oracle dmp 1 创建directory数据库对象并授权 sqlplus as sysdba SQL gt create or replace direc
  • Basic Level 1046 划拳 (15分)

    题目 划拳是古老中国酒文化的一个有趣的组成部分 酒桌上两人划拳的方法为 每人口中喊出一个数字 同时用手比划出一个数字 如果谁比划出的数字正好等于两人喊出的数字之和 谁就赢了 输家罚一杯酒 两人同赢或两人同输则继续下一轮 直到唯一的赢家出现
  • 算法推荐技术合规要点梳理与备案指引

    2022年3月1日 国家互联网信息办公室 工业和信息化部 公安部以及国家市场监督管理总局联合发布的 互联网信息服务算法推荐管理规定 以下简称 规定 正式生效 同日 互联网信息服务算法备案系统正式上线运行 下文将简述算法推荐技术合规要点以及备
  • vue3中使用el-table-column sortable对数据进行排序-如何将用户的选择回显到table上显示状态

    element plus 当通过其他设置改变了排序条件后 显示表格需要对应改变筛选状态 在模板中 使用sortable属性将表格列设置为可排序 并绑定一个变量来保存排序的状态
  • 精通python100天——第一天:初识python及环境安装

    课程的初衷 为了小伙伴们 能系统性的从入门到精通python的主要技术点 深入浅出 结合实例 结合实际公司级的项目 让学完这套课程的小伙伴能直接用到工作中去 或达到求职的水平 Python简介 Python是由荷兰人吉多 范罗苏姆 Guid
  • 基于Java语言构建区块链(二)—— 工作量证明

    最终内容请以原文为准 https wangwei one posts 7890ab7e html 引言 上一篇文章中 我们实现了区块链最基本的数据结构模型 添加区块以及和前一个区块连接在一起 但是 我们的实现方式非常简单 而真实的比特币区块
  • 小程序性能优化之页面预加载方案——让你的小程序运行如飞 集成篇

    小程序性能优化之页面预加载方案 集成篇 转载请注明出处 https blog csdn net sinat 27612147 article details 80802725 前言 之前看到一篇文章 微信小程序之提高应用速度小技巧 是讲如何
  • Python基础复习总结

    文章目录 Python基础复习 Python的下载与安装 标识符 关键字 模块 条件 循环语句 if elif else for循环 while循环 成员测试 Python中的数据类型 序列 列表 list 元组 tuple 集合 set
  • javascript数据类型number、string和布尔

    number数字类型 计算机number是有一个范围的 2的53次方 2的53次方 注意书写顺序 例如一个商品17 45 买3个打9折 以下两种写法保留两位小数结果是不相同的 var obj age 20 var num 17 45 con
  • 8-使用QT5的鼠标事件和滚轮事件

    使用QT5的鼠标事件和滚轮事件 完成鼠标左键拖动窗口 双击全屏 滚轮放大缩小窗口大小 这里使用的是QMouseEvent类里面的鼠标事件 通常进行重定义部件的鼠标事件处理函数来实现自定义的内容操作 同样 鼠标滚轮操作是利用QWheelEve
  • 三个可替代“迅雷”的下载软件,速度超快!

    今天推荐可以替代迅雷的软件 那些你使用迅雷无法下载的资源 现在都可以下载了哦 1 qBittorrent 解压提供的安装包 然后双击 qbittorrent exe 找到你要下载的磁力链接 点击右上角 添加下载任务 设置你的下载路径 点击
  • K8S控制器Deployment

    简述 Deployment为Pod和ReplicaSet提供了一个声明式定义 declarative 方法 用来替代以前的ReplicationController来方便的管理应用 典型的应用场景包括 定义Deployment来创建Pod和
  • 关于搭建测试环境(详细)

    简述搭建测试环境 本人呢 是一名测试人员 以前工作的时候我们的测试环境都是网管 运维 帮我们管理的 顶多也就在tomcat下部署项目包 还是操作几个比较简单的指令 前不久就自己搭了套测试环境 然后也没事总结了一下 大致相同 可能存在个别差异
  • k8s lifecycle——poststart和prestop

    1 lifecycle的声明 lifecycle postStart exec command bin sh c sleep 100 preStop exec command bin sh c sleep 100 2 poststart 容