K8s之Pod生命周期、启动停止钩子详解

news2024/11/22 22:36:01

文章目录

    • 一、Pod生命周期流程
    • 二、初始化容器-initContainers
    • 三、主容器操作-containers
      • 1、启动钩子-lifecycle.postStart
      • 2、停止钩子-lifecycle.preStop

一、Pod生命周期流程

Pod生命周期整个过程 如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t3nOh92k-1684662665661)(D:\MD归档文档\IMG\image-20230521153040610.png)]

1、在启动任何容器之前,前创建 pause 容器,它初始化Pod的环境并为后续加入的容器提供共享名称空间。

2、初始化容器(initContainers):一个Pod可以定义任意个初始化容器,如上图就定义了两个初始化容器,初始化会按照YAML清单中顺序执行,当最后一个初始化容器执行成功后,才会去启动主容器。

3、启动钩子(postStart):容器启动后执行的一些操作。

4、容器探测:

  • 启动探测(Startupprobe):探测容器是否正常运行。
  • 存活探测(Livenessprobe):探测容器是否处于Running 状态,如果不是根据重启策略进行响应操作。
  • 就绪探测(Readinessprobe):探测容器是否就绪对外提供服务。

5、停止钩子(preStop):容器关闭前执行的一些操作

二、初始化容器-initContainers

初始化容器官方参考文档:

初始化容器指,在启动主容器前的一些操作,使用 pod.spec.initContainers 来定义初始化容器,可以定义多个初始化容器,会按照顺序一次执行,执行完成后依次关闭初始化容器。当所有初始化容器执行完成且正常关闭后,才会去启动主容器。

实例:定义Pod资源,创建两个初始化容器,初始化容器执行 sleep 2,也就是说我们要等定义的两个初始化容器都睡眠2秒后,才创建主容器

cat pod-init.yaml 

---
apiVersion: v1
kind: Pod
metadata:
  name: init-pod
  labels:
    env: uat
spec:
  initContainers:
  - name: init-1
    image: busybox:1.28
    imagePullPolicy: IfNotPresent
    command: ["sh", "-c", "sleep 2"]

  - name: init-2
    image: busybox:1.28
    imagePullPolicy: IfNotPresent
    command: ["sh", "-c", "sleep 2"]

  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent

执行YAML文件 && 实时观察Pod状态:

kubectl apply -f pod-init.yaml
kubectl get pods init-pod -w

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vEuUYWIw-1684662665662)(D:\MD归档文档\IMG\image-20230521162813489.png)]

三、主容器操作-containers

查看帮助命令:

kubectl explain pod.spec.containers.lifecycle.preStop

参数:

  • exec:执行命令
  • httpGet:向容器IP地址的某指定端口的path发起HTTP GET请求
  • tcpSocket:在容器启动前等待一个TCP端口打开

1、启动钩子-lifecycle.postStart

该钩子创建容器后立即被执行,如果执行失败,则会根据重启测试判断是否重启,这个钩子不需要传递任何参数。

实例:定义Pod启动钩子,容器运行后记录容器运行时间

cat pod-1.yaml 

---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-1
  namespace: default
  labels:
    env: uat
    app: nginx
spec:
  containers:
  - name: nginx-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ['/bin/bash', '-c', 'echo "Start Time: $(date +%F)" > /root/time.txt']

执行YAML文件:

kubectl apply -f pod-1.yaml

进入容器,查看容器启动时间

kubectl exec -it nginx-1 -- /bin/bash

# cat /root/time.txt
Start Time: 2023-05-21

2、停止钩子-lifecycle.preStop

容器停止前执行操作,比如容器停止前发送信号告诉监控系统此Pod将要停止等。

实例:创建Pod定义停止钩子,在容器停止前,优雅的关闭容器内服务

cat pod-2.yaml 

---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-2
  namespace: default
  labels:
    env: uat
    app: nginx
spec:
  containers:
  - name: nginx-container
    image: nginx
    lifecycle:
      preStop:
        exec:
          command: ['/bin/bash', '-c', 'nginx -s stop']

执行YAML清单:

kubectl apply -f pod-2.yaml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/579957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络通信IO模型上

计算机组成 计算机由软件和硬件组成,软件包括CPU、内存等,硬件包括主板,磁盘,IO设备(网卡、鼠标、键盘等)、电源按钮。 内核程序加载过程 当接通电源的时候1、BIOS就会把它的一段代码放入了内存当中&#…

ORB SLAM3 构建Frame

1.构造Frame 为了构建一帧Frame,主要的步骤如下: 提取ORB特征点(ExtractORB)对提取的特征点进行矫正(cv::undistortPoints)计算去畸变后的图像边界(ComputeImageBounds)将特征点分配到网格中(AssignFeaturesToGrid) A.提取ORB特征点 首先需要对当前帧…

某程序员哀叹:月薪四五万,却每天极度焦虑痛苦,已有生理性不适,又不敢裸辞,该怎么办?

高薪能买来快乐吗? 来看看这位程序员的哀叹: 实在是扛不住了,每天都在极度焦虑和痛苦中度过,早上起来要挣扎着做心理建设去上班,已经产生生理性的头晕恶心食欲不振。有工作本身的原因,更多是自己心态的问…

如何在CSDN获得铁粉

文章目录 前言关于铁粉方法总结 前言 提示:这里可以添加本文要记录的大概内容: 铁粉512位即可参加此活动 完成一篇如何获得铁粉,或者相关的文章且质量分达到80分以上即可 关于铁粉 简单地说,就是在过去 N 个月内,一…

vscode配置flutter开发环境,不需要安装第三方安卓模拟器

1.获取Flutter SDK 点击下方的安装包,获取 stable 发行通道的 Flutter SDK 最新版本:Flutter SDK 将压缩包解压,然后把其中的 flutter 目录整个放在你想放置 Flutter SDK 的路径中**(注意不要出现中文目录)** 配置Wi…

Spring Boot配置文件(5/27)

1.Spring Boot 配置文件的分类和作用 整个项目所有重要的数据都是在配置文件中配置的 1.数据库连接信息(包含用户名和密码的设置) 2.项目的启动窗口; 3.第三方系统调用密匙等信息 4.用于发现和定位问题的普通日志和异常日志等等 大体上可以分…

基于FPGA的Bayer转RGB算法实现

1 概述 Bayer转RGB在图像处理中被称为去马赛克(Demosaic),是机器视觉ISP流程中的一个基础且重要的算法,主要完成彩色图像传感器原始的Bayer格式图像到RGB格式图像的转换。 关于Bayer图像的相关概念和知识,本文不作介绍…

jquery data和data-属性不一致问题

延申val和value属性同样不一致 <script src"https://code.jquery.com/jquery-3.7.0.min.js"></script> <input type"text" value"F119-PW110" data-tag"F119" id"txtEngine" name"Engine" placeh…

第十六届全国大学生信息安全竞赛创新实践能力赛(CISCN)

目录 Misc 1、被加密的生产流量 Crypto 2、Sign_in_passwd Web 3、unzip 4、dumpit Re 5、babyRE Pwn 6、funcanary Misc 1、被加密的生产流量 下载附件解压后是一段流量&#xff0c;使用wireshark打开 最开始做的时候找错了方向&#xff0c;追踪到了另一个东西 …

阿里云服务器配置怎么选择合适?CPU内存带宽配置

阿里云服务器配置如何选择&#xff1f;个人用户选择通用算力型u1云服务器或轻量应用服务器&#xff0c;2核2G、2核4G配置即可&#xff0c;企业公司用户可以选择独享型ECS计算型c7、通用型g7等&#xff0c;4核8G、8核16G、4核32G等配置&#xff0c;阿里云百科来详细说下不同用户…

实验二十一、积分运算电路的输出波形分析

一、题目 利用 Multisim 分析图1所示两个积分运算电路的输出波形&#xff0c;输入电压为 200 Hz、幅值为 1 V 的方波信号。 图 1 图1\,\, 图1 二、仿真电路 在 Multism 中搭建图1所示的两个电路&#xff0c;如图2所示。为了防止电路中的直流增益过大&#xff0c;故在电容上…

node.js与内置模块

一、目标 能够知道什么是Node.js能够知道Node.js可以做什么能够说出Node.js中的JavaScript的组成部分能够使用fs模块读写操作文件能够使用path模块处理路径能够使用http模块写一个基本的web服务器 二、目录 初始Node.jsfs文件系统模块path路径模块http模块 1.初始Node.js …

[Nacos] Nacos Server处理订阅请求 (九)

文章目录 1.InstanceController#list()2.InstanceController#doSrvIpxt()3.总结 1.InstanceController#list() Nacos Server处理订阅请求 主要还是从请求中获取参数, 比如namespceId、serviceName、agent(指定提交请求的客户端是哪种类型)、clusters、clusterIP、udpPort(后续…

2023全国酒店数据

数据内容字段结构 hotel_id int(11) NOT NULL, name varchar(100) DEFAULT NULL, name_en varchar(100) DEFAULT NULL, short_name varchar(100) DEFAULT NULL, province varchar(20) DEFAULT NULL, city_id int(11) DEFAULT NULL, city varchar(20…

R语言实践——使用rWCVP在WCVP中匹配名称

使用rWCVP在WCVP中匹配名称 加载库工作流1. 示例数据&#xff1a;IUCN红色名录2. 将匹配的名称解析为接受名2.1 模糊匹配2.2 多项匹配2.3 将评估与接受的名称相关联 3. 可视化匹配过程4. 得到最终数据集 加载库 世界维管植物名录提供了所有已知维管植物物种的全球共识观点&…

LabView中条件结构的使用方法1

LabView中的条件结构包含一个或多个子程序框图&#xff0c;即分支&#xff0c;当满足某个条件时&#xff0c;相应的分支会被执行。也就是说&#xff0c;在条件结构执行时&#xff0c;仅有一个分支被执行。当程序存在两种或多种可能性时&#xff0c;可以使用条件结构。 1 创建条…

攻防世界安卓逆向练习

一.easy-so jadx分析程序逻辑 可以看到关键在于cyberpeace.CheckString()函数 双击跟进之后可以发现是native层函数 ida查看so文件 程序逻辑: 将字符串保存到新的空间buffer中第一个判断是将buffer的前16个字符和后16个字符进行交换第二个判断是将buffer的2个相邻的字符互换位…

算法|10.从暴力递归到动态规划3

算法|10.从暴力递归到动态规划3 1.纸牌游戏 题意&#xff1a;给定一个整型数组arr&#xff08;都是正数&#xff09;&#xff0c;代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌&#xff0c;规定玩家A先拿&#xff0c;玩家B后拿。但是每个玩家每次只能拿走最左…

(10) 朴素贝叶斯

文章目录 1 概述2 不同分布下的贝叶斯2.1 高斯朴素贝叶斯GaussianNB2.1.1 认识高斯朴素贝叶斯2.1.2 探索贝叶斯&#xff1a;高斯朴素贝叶斯擅长的数据集2.1.3 探索贝叶斯&#xff1a;高斯朴素贝叶斯的拟合效果与运算速度 2.2 概率类模型的评估指标2.2.1 布里尔分数Brier Score2…

PCIE知识点-022:PCIe 时钟结构

图1&#xff1a;参考时钟结构示意图[4] 1. Common Refclk Architecture Common Refclk Architecture&#xff0c;即同源参考时钟架构&#xff0c;PCIe收发设备共用一个时钟源&#xff0c;是目前是使用最为广泛的方案。 缺点&#xff1a; 对于适用同一 Common Clock 作为参考时…