Kubernetes Pod 生命周期

news2024/12/26 1:04:39

Pod 生命周期是其从创建开始至终止退出的事件范围。

Pod 状态

  • Pending API server 创建了 Pod 对象并已存入 etcd 中,但尚未调度完成或仍处于从镜像仓库下载镜像的过程中。
  • Running Pod 已经被调度至某节点,并且所有容器都已经被 kubelet 创建完成。
  • Succeeded Pod 中所有的容器都已经成功终止并且不会被重启
  • Failed 所有容器都已经终止,但至少有一个容器终止失败。
  • Unknown API server 无法正常获取到 Pod 对象的状态信息,通常是由于无法与所在工作节点的 kubelet 通信导致。

Pod 创建过程

  1. 用户通过 kubectl 或其他 API 客户端提交 Pod 对象给 API server。
  2. API server 尝试将 Pod 对象的相关信息存入 etcd 中,写入操作完成后 API server 会返回确认信息至客户端。
  3. API server 开始反映 etcd 中的状态变化。
  4. 所有的 Kubernetes 组件均使用 watch 机制来跟踪检查 API server 上的相关变化。
  5. kube-scheduler 通过其 watcher 观察到 API server 创建了新的 Pod 对象但尚未绑定至任何节点。
  6. kube-scheduler 为 Pod 对象挑选一个工作节点并将结果更新至 API server。
  7. 调度结果由 API server 更新至 etcd,而且 API server 也开始反映此 Pod 对象的调度结果。
  8. Pod 被调度的目标工作节点上的 kubelet 尝试在当前节点上启动容器,并将容器的结果状态返回至 API server。
  9. API server 将 Pod 状态信息存入 etcd。
  10. 在 etcd 确认写操作完成后,API server 将确认信息发送至相关的 kubelet。

Pod 生命周期中的行为

用户可以为 Pod 对象定义其生命周期中的多种行为。

1. init container

在应用程序的主容器启动之前运行,常用于为主容器执行一些预操作

  1. init container 运行失败将不断重启直到成功完成。
  2. init container 按定义的顺序执行。

2. lifecycle hook

在关键时刻采取某种行动。

  1. postStart 容器创建完成之后立即运行,与容器的 ENTRYPOINT 异步。
  2. preStop 容器终止前立即运行,同步,在完成前会阻塞删除容器的操作。

探针

  • ExecAction 在 Pod 中执行命令,并根据返回的状态码进行诊断,状态码 0 表示成功。
  • TCPSocketAction 与 Pod 的某端口尝试建立 TCP 连接。
  • HTTPGetAction 通过指定路由发起 HTTP GET 请求诊断,响应码为 2xx 或 3xx 时成功。
  • liveness probe(存活性检测) 用于判断 Pod 是否处于 Running 状态,如果未通过,kubelet 将杀掉 Pod 并根据 restartPolicy 决定是否将其重启。
  • readness probe(就绪性检测) 用于判断 Pod 是否准备就去并可以对外提供服务,未通过检测 Service 会将其 IP 摘除。

重启

  1. Always 一终止就重启
  2. OnFailure 仅在 Pod 出现错误时才重启
  3. Never 从不

一旦 Pod 绑定到某个节点,将永远不会被重新绑定到另外一个节点,要么被重启,要么终止,直到节点挂掉或被删除。

Pod 终止过程

当用户提交删除请求后,系统会进行强制删除操作的宽限期倒计时,并将 TERM 信息发送给 Pod 对象的每个容器中的主进程。宽限期倒计时结束后,进程将收到强制终止的 KILL 信号,Pod 对象随即也由 API server 删除。

  1. 请求删除 Pod。
  2. API server 将 Pod 标记为 Terminating 状态。
  3. (与第 2 步同时进行)kubelet 在监控到 Pod 对象转为 Terminating 状态的同时启动 Pod 关闭过程。
  4. (与第 2 步同时进行)Service 将 Endpoint 摘除。
  5. 如果当前 Pod 对象定义了 preStop hook,则在其标记为 Terminating 后会以同步的方式执行,宽限期开始计时。
  6. Pod 中的容器进程收到 TERM 信号。
  7. 宽限期结束后,若进程仍在运行,会收到 SIGKILL 信号。
  8. kubelet 请求 API server 将此 Pod 对象的宽限期设置为 0 从而完成删除操作。

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

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

相关文章

spss分析方法-聚类分析

聚类分析是根据研究对象的特征,按照一定标准对研究对象进行分类的一种分析方法。下面我们主要从下面四个方面来解说: 实际应用理论思想建立模型 分析结果 一、实际应用 聚类分析的目标就是在相似的基础上收集数据来分类。 聚类源于很多领域&#xf…

安装虚幻引擎

1、下载和安装 Epic Games启动程序。 下载地址:https://www.unrealengine.com/zh-CN/download 进入网站你可以看到下载信息和推荐系统要求等: 点击“下载启动程序”即可下载,或者直接点击下载链接:https://epicgames-download1.ak…

37岁985硕士,投上千份简历无人问津......该何去何从

前言 简单自我介绍一下,我老刘,37岁失业的985硕士 ,13年其实可以直接入编的我,其实都不需要考试了,可以直接入职,但是我并没有选择去,后面直接选择了新闻周刊干了四年,后面换了一家…

【福利】不用考试可以增持CSPM-2证书?有PMP证书才行!

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

CSS查缺补漏之《过渡效果与动画效果》

过渡 过渡效果使用transition属性表示&#xff0c;设置在需要过渡效果的元素上&#xff0c;它可以在让元素从一种样式平滑过渡为另一种样式。下面会依次介绍其属性值~ 示例代码如下&#xff1a; <div class"box">世界你好 </div> .box {width: 200px…

多态下,为什么使用virtual修饰析构函数

多态下,为什么使用virtual修饰析构函数 问题&#xff1a; 用virtual修饰的析构函数和非虚函数的析构函数有什么区别&#xff1f; 当时以为&#xff1a;只有经过virtual修饰的析构函数&#xff0c;派生类生命周期结束时&#xff0c;才会自动的先调用派生类的析构函数&#xff0…

mybatisplus连接sqlserver配置

目录 前言&#xff1a; 一&#xff1a;所需依赖&#xff1a; 二&#xff1a;application.yml 三:分页插件 前言&#xff1a; 本文主要讲解连接sqlserver的配置 一&#xff1a;所需依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> &l…

hutool工具包的实用方法简单介绍

说明&#xff1a;Hutool是一个小而全的Java工具类库&#xff08;详细参考&#xff1a;https://hutool.cn/docs/#/&#xff09;&#xff0c;使用前需要先添加依赖 &#xff08;添加依赖&#xff09; <dependency><groupId>cn.hutool</groupId><artifactId…

Redis从入门到精通进阶篇之持久化RDB

文章目录 RDB持久化工作原理 Redis 6的持久化机制主要有两种&#xff1a;RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。本文将详细介绍这两种持久化方式的工作原理和配置要点。 RDB持久化 RDB持久化是将当前进程的数据生成快照…

项目经理,35岁以后就很难再有竞争力了吗?

早上好&#xff0c;我是老原。 知乎热榜上有一个问题吸引了我的注意&#xff1a; 说句公道话&#xff0c;35岁确实是个坎&#xff0c;这个坎在吃青春饭的行业来说&#xff0c;格外明显。 体力和精力都大不如年轻人&#xff0c;从性价比的角度来说&#xff0c;公司还是不会用…

2.2ORBSLAM3之几种特征点提取方法

0.简介 本节对ORB特征、SIFT特征、SURF特征、Harris角点、Shi-Tomas角点的提取与描述子计算原理进行总结&#xff0c;其中Harris角点、Shi-Tomas角点是关键点&#xff0c;没有对应的描述子&#xff0c;一般用于光流跟踪(Vins系列算法)。 综合所有的特征检测算法来看&#xff…

win设置静态IP

win设置静态IP地址 前言 局域网&#xff0c;IP地址的管理方式主要有静态分配方式和动态分配方式。 静态分配IP地址是指给每一台计算机都分配一个固定的IP地址&#xff0c;优点是便于管理&#xff0c;特别是在根据IP地址限制网络流量的局域网中&#xff0c;以固定的IP地址或IP地…

Django高级扩展之tinymce富文本实现

目录 安装 在站点中使用 注册富文本应用 添加配置文件 创建模型类 生成迁移文件 执行表迁移 配置站点 富文本不显示解决 修改主题 修改语言设置 自定义视图使用 设置路由 视图 创建模板 总结 安装 pip install django-tinymce 安装过程如下&#xff1a; 在站点…

宾军志:数据管理能力成熟度模型建设历程

4月27日在2023数据治理新实践峰会上&#xff0c;中国电子信息行业联合会数据资产管理专委会秘书长宾军志先生为大家分享了《数据管理能力成熟度模型建设历程》主题演讲。 以下为宾军志先生的演讲实录&#xff0c;为了方便阅读&#xff0c;小编做了一些字句修改和文本优化。大家…

JDK安装2023最完整教程与配置(零基础)

一、JDK简介 学习Java&#xff0c;需要下载并安装JDK&#xff0c;即Java Development Kit、Java开发工具包&#xff0c;为了能够打开java程序&#xff0c;就需要按照操作系统的要求进行环境变量的配置。 二、JDK下载 要想运行java开发的程序&#xff0c;必须先下载jdk&#…

io.netty学习 (一)Netty入门

目录 前言 Java原生API之痛 Netty的优势 非阻塞 I/O 丰富的协议 异步和事件驱动 精心设计的API 丰富的缓冲实现 高效的网络传输 Netty 核心概念 核心组件 传输服务 协议支持 Netty简单应用 总结 前言 关于Netty的学习&#xff0c;最近看了不少有关视频和书籍&am…

【git】VSCode 上的文件夹如何上传到 github 上?

一、重要意义 VSCode 上的文件夹上传到github有什么意义&#xff1f; 版本控制&#xff1a;通过将文件夹上传到GitHub&#xff0c;您可以使用Git进行版本控制。这意味着您可以记录每个文件的修改历史&#xff0c;并轻松地切换到以前的版本。如果您犯了错误或需要回滚更改&…

数据结构与算法·第10章【内部排序】

概念 排序问题可以分为内部排序和外部排序。若整个排序过程不需要访问外存便能完成&#xff0c;则称此类排序问题为内部排序&#xff1b;反之&#xff0c;若参加排序的记录数量很大&#xff0c;整个序列的排序过程不可能在内存中完成&#xff0c;则称此类排序问题为外部排序。…

成为一名成功的项目经理,你需要了解这些

作为一名有抱负的项目经理&#xff0c;你需要了解自己的职责和任务。你的职责不仅仅是确保项目的成功&#xff0c;更要负责带领团队制定可靠的执行计划&#xff0c;并确保所有工作按计划有序进行。因此&#xff0c;你必须具备身兼多职的能力&#xff0c;以确保项目能够顺利完成…

机器视觉初步5-2:图像增强专题

图像增强是一种提高图像质量和信息量的技术&#xff0c;常用于图像处理、计算机视觉和机器学习中。常见的图像增强方法包括直方图均衡化、高斯滤波、锐化、对比度拉伸、图像平滑、图像锐化、图像滤波、图像金字塔等。 以下是一些常见的图像增强方法的示例代码&#xff0c;使用H…