K8s: 关于Kubernetes中的Pod的生命周期(状态)以及生命周期的钩子函数处理

K8S面试题总结 1、kubenetes针对pod资源对象的健康监测机制? 答:提供了三类probe(探针)来执行对pod的健康监测: 1)livenessProbe探针:可以根据用户自定义规则来判定pod是否健康,用于判断容器是否处于Running状态,如果不是,kubelet就会杀掉该容器,并根据重启策略做相应的处理。如果容器不包含该探针,那么kubelet就会默认返回值都是success; 2)ReadinessProbe探针:同样是可以根据用户自定义规则来判断pod是否健康,容器服务是否可用(Rea... 阅读详情

pod 的生命周期


1 ) pod 几种常用状态

  • 1.1 )Pending(挂起)
    • Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行
    • 此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。
  • 1.2 )Running(运行中)
    • Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建
    • 至少有一个容器仍在运行,或者正处于启动或重启状态
  • 1.3 )Succeeded(成功)
    • Pod 中的所有容器都已成功终止,并且不会再重启
  • 1.4 )Failed(失败)
    • Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止
    • 也就是说,容器以非 0 状态退出或者被系统终止。
  • 1.5 )Unknown(未知)
    • 因为某些原因无法取得 Pod 的状态
    • 这种情况通常是因为与 Pod 所在主机通信失败

2 )pod内部的容器相应的状态

  • 一旦调度器将 Pod 分派给某个节点,kubelet 就通过容器运行时开始为 Pod 创建容器
  • 容器的状态有三种:Waiting(等待)、Running(运行中)和 Terminated(已终止)
  • $ kubectl describe pod <pod 名称>
  • 2.1 ) Creating (创建中):
    • 容器镜像正在被拉取,并且容器正在被创建
    • 这是Pod状态从Pending过渡到Running之前的一个暂态
  • 2.2 ) Running(运行中)
    • Running 状态表明容器正在执行状态并且没有问题发生
    • 如果配置了 postStart 回调,那么该回调已经执行完成
    • 如果你使用 kubectl 来查询包含 Running 状态的容器的 Pod 时
    • 你也会看到 关于容器进入 Running 状态的信息
  • 2.3 ) Terminating (终止中)
    • 容器正在被终止,这通常发生在Pod被删除或缩容时
  • 2.4 ) Terminated(已终止)
    • 处于 Terminated 状态的容器已经开始执行并且或者正常结束或者因为某些原因失败
    • 如果你使用kubectl 来查询包含 Terminated 状态的容器的 Pod 时
    • 你会看到 容器进入此状态的原因、退出代码以及容器执行期间的起止时间
  • 2.5 ) Waiting (等待)
    • 如果容器并不处在 Running 或 Terminated 状态之一,它就处在 Waiting 状态
    • 处于 Waiting 状态的容器仍在运行它完成启动所需要的操作
    • 例如,从某个容器镜像 仓库拉取容器镜像,或者向容器应用 Secret 数据等等
    • 当你使用 kubectl 来查询包含 Waiting 状态的容器的 Pod 时,你也会看到一个 Reason 字段,其中给出了容器处于等待状态的原因
  • 2.6 ) Exited(已退出)
    • 容器中的进程已经正常或异常终止,并且不再运行。这可能是由于程序执行完毕或遇到错误而退出
  • 2.7 ) Restarting (重启中)
    • 容器正在尝试重新启动,这通常是因为容器之前异常退出
    • 并且根据Pod的配置进行了自动重启

Pod 生命周期的钩子函数

  • 在Pod配置文件中,定义 postStart 和 preStop 处理函数

  • 创建一个包含一个容器的 Pod,该容器为 postStart 和 preStop 事件提供对应的处理函数

  • 创建一个 pod, 新建一个 lifecycle-demo.yaml 文件

    apiVersion: v1
    kind: Pod
    metadata:
     name: lifecycle-demo
     labels:
       name: lifecycle-demo
    spec:
     containers:
     - name: lifecycle-demo-container
       image: nginx
       lifecycle:
         postStart:
           exec:
             command: ["sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
         preStop:
           exec:
             command: ["sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]
       resources:
         limits:
           memory: "128Mi"
           cpu: "500m"
       ports:
        - containerPort: 80
    
  • $ kubectl create -f lifecycle-demo.yaml

    pod/lifecycle-demo created
    
  • $ kubectl get po

    NAME             READY   STATUS              RESTARTS   AGE
    lifecycle-demo   0/1     ContainerCreating   0          8
    
  • $ kubectl exec -it lifecycle-demo -- sh 进入pod

  • $ cat /usr/share/message 查看文件是否被写入内容

    Hello from the postStart handler
    
  • 在上述配置文件中,可以看到 postStart 命令在容器的 /usr/share 目录下写入文件 message

  • 命令 preStop 负责优雅地终止 nginx 服务

  • 当因为失效而导致容器终止时,这一处理方式很有用

涨薪技术|Kubernetes(k8s)之Pod生命周期(上) Kubernetes Pod生命周期详解 Pod生命周期包含创建、运行初始化容器、运行主容器和终止过程。Pod状态分为Pending(挂起)、Running(运行中)、Succeeded(成功)、Failed(失败)和Unknown(未知)。创建过程涉及API Server、etcd、调度器和kubelet的协同工作,而终止过程则包括prestop钩子和宽限期等机制。初始化容器(InitContainer)在主容器前运行,确保先决条件满足,特点是必须按顺序成功执行。示例展示了如何利用初始化容器实现服务依赖检 阅读详情

相关推荐

Kubernetes Pod 是什么?

Kubernetes Pod是Kubernetes中最小的可部署计算单元,相当于一个"逻辑主机",包含一个或多个紧密相关的容器。Pod内的容器共享网络、存储和主机名等资源。Pod的设计源于"一个容器一个进程"理念,允许将需要协同工作的容器组合管理。Pod通过YAML文件定义,包含容器、资源限制、探针等配置。通常不直接创建裸Pod,而是通过Deployment、StatefulSet等控制器管理Pod生命周期。最佳实践包括使用控制器、配置探针、设置资源限制等。理解Pod

guigenyi的专栏 1543

k8s学习--pod的所有状态详解(图例展示)

在 Kubernetes 中,Pod 是最小的可部署计算单元。Pod 有多种状态,每种状态都反映了 Pod 的生命周期的不同阶段。

lwxvgdv的博客 4053

【Kubernetes】Pod生命周期、初始化容器、主容器

Pod生命周期、初始化容器、主容器

Mr.ACO的专栏 1236

K8S生命周期---钩子函数(postStart/preStop)

容器生命周期钩子 容器生命周期钩子(Container Lifecycle Hooks)监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数。 支持两种钩子: postStart: 容器创建后立即执行,注意由于是异步执行,它无法保证一定在 ENTRYPOINT 之前运行。如果失败,容器会被杀死,并根据 RestartPolicy 决定是 否重启 preStop:容器终止前执行,常用于资源清理。执行完成之后容器将成功终止,如果失败,容器同样也会被杀死。在其完成之前 会阻塞删除容器的操作 钩子的回调函

a13568hki的博客 3669

K8s Pod生命周期完全指南

Pod生命周期摘要 Pod生命周期包含创建、初始化、运行主容器和终止四个主要阶段。Pod有五种状态:Pending(挂起)、Running(运行中)、Succeeded(成功)、Failed(失败)和Unknown(未知)。 创建过程涉及API Server、etcd、Scheduler和Kubelet的协同工作。终止过程包括30秒宽限期、PreStop钩子执行和最终删除。 初始化容器在主容器前运行,必须顺序执行并成功完成,常用于环境检查和依赖准备。钩子函数(PostStart/PreStop)提供生命周期

2301_81276162的博客 1428

涨薪技术|Kubernetes(k8s)之Pod生命周期(下)

上次推文我们学习了Pod生命周期(上)知识:相位、创建与终止、初始化容器,今天继续分享完余下的3个知识:钩子函数、容器探测、重启策略。钩子函数能够感知自身生命周期中的事件,并在相应的时刻到来时运行用户指定的程序代码。k8s在主容器的启动之后和停止之前提供了两个钩子函数.post start:容器创建之后执行,如果失败了会重启容器;pre stop:容器终止之前执行,执行完成之后容器将成功终止,在其完成之前会阻塞删除容器的操作;钩子处理器支持使用下面定义动作:1)Exec命令:在容器内执行一次命令。

m0_60889254的博客 1045

Pod状态

在 Kubernetes 中,Pod 的 Completed 状态表示 Pod 中的所有容器都已成功完成并退出。在 Completed 状态下,可以通过 kubectl logs 命令查看容器的日志,以便查看容器的输出和执行结果。Unknown(未知): Pod 的状态无法确定,这可能是由于与 Kubernetes API 的连接中断或其他未知错误。Failed(已失败): Pod 中的所有容器都已退出,并且至少有一个容器由于错误而失败。Running(运行中): Pod 中至少有一个容器正在运行。

喝醉酒的小白 7815

Kubernetes(k8s)之Pod生命周期(下)

本文介绍了Kubernetes中Pod生命周期的三个重要概念:钩子函数、容器探测和重启策略。 钩子函数:包括postStart(容器创建后执行)和preStop(容器终止前执行),支持Exec命令、TCPSocket和HTTPGet三种触发方式。 容器探测:包含存活性探针(livenessProbe)和就绪性探针(readinessProbe),以及启动探针(startupProbe),

m0_60889254的博客 1089

《Kubernetes知识篇:Kubernetes之Pod容器钩子》

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

东城绝神 1206

K8s(二十三):Pod的生命周期详解

🔴 K8s(二十三):Pod的生命周期详解

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

DINOv3实战指南:如何利用零样本视觉模型革新工业质检

本文详细介绍了如何利用DINOv3零样本视觉模型革新工业质检流程。通过无需标注数据的自监督学习技术,DINOv3能快速部署高精度检测系统,显著降低成本和提升效率。文章涵盖模型选型、数据准备、实时检测优化及典型行业解决方案,为工业质检提供革命性AI实践指南。

ansible6ops的博客 124

Kubernetes笔记(七)--PodHook钩子函数

我们知道Pod是Kubernetes集群中的最小单元,而 Pod 是有容器组组成的,所以在讨论 Pod 的生命周期的时候我们可以先来讨论下容器的生命周期。 实际上 Kubernetes 为我们的容器提供了生命周期钩子的,就是我们说的Pod Hook,Pod Hook 是由 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。我们可以同时为 Pod...

BigData_Mining的博客 1375

深入解析Unity3D中PostLateUpdate突然占用大量时间的原因

在Unity3D的生命周期中,是一个在LateUpdate之后被调用的方法。它通常用于处理一些需要在所有更新(包括物理更新和动画更新)之后进行的逻辑。由于它在游戏循环的后期阶段被调用,因此它通常用于处理与渲染直接相关的任务,如相机调整、UI更新等。突然占用大量时间的问题可能由多种原因引起,包括复杂的逻辑处理、频繁的资源加载、不恰当的渲染优化、插件或第三方库的副作用以及内存泄漏或垃圾回收等。为了解决这个问题,开发者需要仔细审查和优化中的代码,同时利用Unity提供的工具来监控和分析游戏性能。

Yori_22的博客 981

kubernetes(k8s)-pod生命周期

相位和状态让你能快速判断 Pod 的整体健康状况。重启策略定义了容器失败后的恢复行为。生命周期回调让你有机会在容器启动和关闭时执行自定义逻辑,实现优雅启停。容器探针是 Kubernetes 的“眼睛”,它通过存活探针确保应用实例的可用性,通过就绪探针确保流量的正确路由,通过启动探针保护慢启动应用。合理配置这些机制,是构建健壮、可观测、自愈的云原生应用的基础。

qq_28131747的博客 1447

电化学阻抗谱(EIS)在锂离子电池中的应用

摘要电化学阻抗谱(electrochemical impedance spectroscopy, EIS)是一种重要的电化学测试方法,在锂离子电池动力学反应机理研究及动力学参数测量等方面具有广泛的应用。在锂离子电池运行过程中,各反应步骤的动力学参数及时间常数不同,而EIS可以在较宽的频率范围内对体系施加小幅正弦激励信号,使得在特定频率下突出特定时间常数的电极过程,从而将复杂的电极过程分离,实现单一电极过程动力学的分析。通过对交流阻抗信息的研究,也可以为锂离子电池及其他电池的应用与管理、电化学过程设计及电极材

qiushireader的博客 2656

Doris存储层设计介绍2——数据写入及删除流程

Doris存储层设计介绍2——数据写入及删除流程

爱吃辣条的博客 4591

Kubernetes Pod生命周期 钩子 pod hook

Pod Hook Kubernetes 为我们的容器提供了生命周期钩子,就是我们说的Pod Hook,Pod Hook 是由 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。我们可以同时为 Pod 中的所有容器都配置 hook。 Kubernetes 为我们提供了两种钩子函数: PostStart:这个钩子在容器创建后立即执行。但是,并不能保证钩子将在容器ENTRYPOINT之前运行,因为没有参数传递给处理程序。主要用于资源部署、环境准备等。..

小楼一夜听春雨,深巷明朝卖杏花 2789

AI+医疗:多模态模型让肺结节诊断准确率突破95%+的实战方案

多模态融合是必由之路:单一影像模型难以突破95%准确率,必须整合临床、生物标志物等多维数据跨模态注意力机制是核心:简单拼接效果差,注意力机制能自动学习各模态权重,提升融合效果临床适配比技术先进更重要:模型输出必须符合医生诊断习惯,提供可解释的决策依据持续学习是长期成功的关键:医疗数据分布不断变化,模型必须具备自适应能力多学科协作是保障:放射科、胸外科、病理科、AI工程师共同参与模型设计与优化。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1023

【云原生 | 从零开始学Kubernetes】十二、k8spod的生命周期与容器钩子

k8s的pod生命周期以及两种钩子,下期讲另外的钩子

欢迎关注,一起进步! 3009

国科大作业考试资料-人工智能原理与算法-2024新编-第十一次作业整理

1、有一位教授想知道学生是否睡眠充足。每天,教授观察学生在课堂 上是否睡觉,并观察他们是否有红眼。教授获得如下的领域知识: (1)没有观察数据时,学生睡眠充足的先验概率为0.7。 (2)给定学生前一天睡眠充足为条件,学生在晚上睡眠充足的概率是0.8;如果前一天睡眠不充足,则是0.3。 (3)如果学生睡眠充足,则红眼的概率是0.2,否则是0.7。 (4)如果学生睡眠充足,则在课堂上睡觉的概率是0.1,否则是0.3。 将这些信息形式化为一个动态贝叶斯网络,使教授可以使用这个网络从观察序列中进行滤波和预

MatsumotoChrikk 1056

华为OD新系统机试真题 - 操作历史管理器的撤销/重做能力

华为OD机试新系统真题【操作历史管理器的撤销/重做能力】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【操作历史管理器的撤销/重做能力】

qq_45776114的博客 865

k8s停止服务_Kubernetes 优雅停止Pod

博客地址:i4t.com首先我们先简单的分析一下"优雅的停止Pod"优雅停止(Graceful shutdown)这个说法来自于操作系统,比如我们windows关机系统首先会退出软件然后一步步到达关机,而相对的就是硬终止(Hard shutdown),简单的理解就是直接拔电源到了微服务中,网关会把流量分配给每个Pod节点上,比如我们上线更新Pod的时候如果我们直接将Pod杀死,那这部分流量就无法得...

weixin_39887221的博客 3918

嵌入式Modbus协议面试题及参考答案

Modbus 协议采用主从模式进行通信,这种模式定义明确,便于在工业环境中实现设备之间的有序数据交互。在主从模式中,存在一个主站(Master)和多个从站(Slave)。主站通常是工业控制系统中的上位机,如 PLC、工控机等,它负责发起通信请求,控制整个通信过程。从站则是各种现场设备,如传感器、执行器等,它们接收主站的请求,并根据请求进行相应的操作,然后将结果返回给主站。主站的主要功能包括:发起数据读取或写入请求、控制通信的时序和流程、处理从站返回的数据。

大模型大数据攻城狮的专栏 2044

【kubernetes】Pod生命周期-启动钩子、停止钩子

Pod生命周期,初始化容器,启动钩子、停止钩子等介绍

meidongyan的博客 1262

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略

默认情况下,一个pod在哪个node节点上运行,是通过scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的;

叶新东老师的博客 871

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: K8s: 关于Kubernetes中的Pod的创建,实现原理,Job调度pod以及pod网络
下一篇: K8s: 在Pod里面创建init容器与健康检查
Wang's Blog
博客等级 码龄12年 7433粉丝 2419原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值