k8s之pod生命周期

news2025/1/11 18:38:18
一.pod生命周期:pod对象从创建开始到终止的过程
	1.作用:
		复杂服务的启动顺序,依赖关系,
		容器服务启动前的相关操作,配置文件生成,依赖服务检测等...
	2.生命周期流程:
		初始化容器--主容器--启动后回调函数-->启动,生命,就绪探针-->关闭前回调函数

		初始化容器执行:执行应用程序启动前的初始化任务,如加载配置文件、检查网络连接等。
		主容器启动:初始化成功后,运行应用程序,提供所需的服务
		启动后回调函数执行:执行一些初始化后设置的任务
		启动探针:检测容器是否已成功启动,并完成初始化,检测不成功重启容器
		生命探针:检测容器内的主进程是否仍在健康运行,在容器全生命周期运行
		就绪探针:检测容器是否已准备好对外提供服务,探测失败容器将拒绝Pod所提供的服务,只会等待,在容器全生命周期运行
		关闭前回调函数执行:清理资源、保存状态或通知其他服务等

	3.容器init初始化
		kubectl get pods -w  //状态监测
		(1)初始化容器流程
				web1   0/1     Pending          
				web1   0/1     Pending              
				web1   0/1     Init:0/1           
				web1   0/1     Init:0/1        
				web1   0/1     Init:0/1          
				web1   0/1     PodInitializing     
				web1   1/1     Running 
	   
		(2)初始化容器编写
				---
				kind: Pod
				apiVersion: v1
				metadata:
				        name: web1
				spec:
				        initContainers:
				        - name: task1
				          image: myos:latest
				          command: ["sh"]
				          args:
				          - -c
				          - |
				            id=${RANDOM}
				            echo "id is :${id}"
				            sleep 2
				            exit $((id%2))
					 - name: task2
				        containers:
				        - name: web
				          image: myos:httpd

	4.容器探针
		(1)探针检查探测方式
			tcpSoceket:对指定的ip地址上的端口执行TCP检查,三次握手,端口是open被认为诊断成功.
			httpGet:使用HTTP协议诊断服务状态,响应状态码大于等于200小于400认为成功.
			exec:在容器内执行指定命令检测,
		(2)探测结果
			Success:成功
			Failure:失败
			Unknown:未知
		
		(3)启动探针(startupProbe):容器出现故障,启动探针会重新触发执行
			spec:
			  containers:
			  - name: web
			    image: myos:httpd
			    startupProbe:                 # 启动探针
			      initialDelaySeconds: 60     # 首次检查延时
			      periodSeconds: 10           # 检查间隔
			      failureThreshold: 6         # 可失败的次数
			      tcpSocket:                  # 使用 tcp 协议检测
			        port: 80                  # 端口号	
		
		(4)生命探针(livenessProbe):检查某个核心应用是否正常运行
			spec:
			  containers:
			  - name: web
			    image: myos:httpd
			    livenessProbe:                # 定义存活探针
			      timeoutSeconds: 3           # 服务影响超时
			      httpGet:                    # 使用 HTTP 协议检测
			        path: /info.php           # 请求的 URL 路径,检测的资源
			        port: 80                  # 服务端口号
		
		(5)就绪探针(readinessProbe):利用脚本监测主从集群的同步状态
			spec:
			  containers:
			  - name: web
			    image: myos:httpd
			    readinessProbe:               # 定义就绪探针
			      failureThreshold: 3         # 失败确认次数
			      periodSeconds: 10           # 检测间隔
			      exec:                       # 执行命令进行检测
			        command:                  # 检测命令
			        - sh
			        - -c
			        - |
			          read ver </var/www/html/version.txt
			          if (( ${ver:-0} > 2 ));then
			             res=0
			          fi
			          exit ${res:-1}          # 版本大于 2 成功,否则失败
        
	5.容器启动后,关闭前回调函数(lifecycle)
		spec:
		  containers:
		  - name: web
		    image: myos:httpd
		    lifecycle:                    # 定义启动后事件处理函数
		      postStart:
		        exec:
		          command:
		          - sh
		          - -c
		          - |
		            echo "自动注册服务" |tee -a /tmp/web.log
		            sleep 10
		      preStop:                    # 定义关闭前事件处理函数
		        exec:
		          command:
		          - sh
		          - -c
		          - |
		            echo "清除已注册的服务" |tee -a /tmp/web.log
		            sleep 10

一.pod生命周期:pod对象从创建开始到终止的过程
    1.作用:
        复杂服务的启动顺序,依赖关系,
        容器服务启动前的相关操作,配置文件生成,依赖服务检测等...
    2.生命周期流程:
        初始化容器--主容器--启动后回调函数-->启动,生命,就绪探针-->关闭前回调函数

        初始化容器执行:执行应用程序启动前的初始化任务,如加载配置文件、检查网络连接等。
        主容器启动:初始化成功后,运行应用程序,提供所需的服务
        启动后回调函数执行:执行一些初始化后设置的任务
        启动探针:检测容器是否已成功启动,并完成初始化,检测不成功重启容器
        生命探针:检测容器内的主进程是否仍在健康运行,在容器全生命周期运行
        就绪探针:检测容器是否已准备好对外提供服务,探测失败容器将拒绝Pod所提供的服务,只会等待,在容器全生命周期运行
        关闭前回调函数执行:清理资源、保存状态或通知其他服务等

    3.容器init初始化
        kubectl get pods -w  //状态监测
        (1)初始化容器流程
                web1   0/1     Pending          
                web1   0/1     Pending              
                web1   0/1     Init:0/1           
                web1   0/1     Init:0/1        
                web1   0/1     Init:0/1          
                web1   0/1     PodInitializing     
                web1   1/1     Running 
       
        (2)初始化容器编写
                ---
                kind: Pod
                apiVersion: v1
                metadata:
                        name: web1
                spec:
                        initContainers:
                        - name: task1
                          image: myos:latest
                          command: ["sh"]
                          args:
                          - -c
                          - |
                            id=${RANDOM}
                            echo "id is :${id}"
                            sleep 2
                            exit $((id%2))
                     - name: task2
                        containers:
                        - name: web
                          image: myos:httpd

    4.容器探针
        (1)探针检查探测方式
            tcpSoceket:对指定的ip地址上的端口执行TCP检查,三次握手,端口是open被认为诊断成功.
            httpGet:使用HTTP协议诊断服务状态,响应状态码大于等于200小于400认为成功.
            exec:在容器内执行指定命令检测,
        (2)探测结果
            Success:成功
            Failure:失败
            Unknown:未知
        
        (3)启动探针(startupProbe):容器出现故障,启动探针会重新触发执行
            spec:
              containers:
              - name: web
                image: myos:httpd
                startupProbe:                 # 启动探针
                  initialDelaySeconds: 60     # 首次检查延时
                  periodSeconds: 10           # 检查间隔
                  failureThreshold: 6         # 可失败的次数
                  tcpSocket:                  # 使用 tcp 协议检测
                    port: 80                  # 端口号    
        
        (4)生命探针(livenessProbe):检查某个核心应用是否正常运行
            spec:
              containers:
              - name: web
                image: myos:httpd
                livenessProbe:                # 定义存活探针
                  timeoutSeconds: 3           # 服务影响超时
                  httpGet:                    # 使用 HTTP 协议检测
                    path: /info.php           # 请求的 URL 路径,检测的资源
                    port: 80                  # 服务端口号
        
        (5)就绪探针(readinessProbe):利用脚本监测主从集群的同步状态
            spec:
              containers:
              - name: web
                image: myos:httpd
                readinessProbe:               # 定义就绪探针
                  failureThreshold: 3         # 失败确认次数
                  periodSeconds: 10           # 检测间隔
                  exec:                       # 执行命令进行检测
                    command:                  # 检测命令
                    - sh
                    - -c
                    - |
                      read ver </var/www/html/version.txt
                      if (( ${ver:-0} > 2 ));then
                         res=0
                      fi
                      exit ${res:-1}          # 版本大于 2 成功,否则失败
        
    5.容器启动后,关闭前回调函数(lifecycle)
        spec:
          containers:
          - name: web
            image: myos:httpd
            lifecycle:                    # 定义启动后事件处理函数
              postStart:
                exec:
                  command:
                  - sh
                  - -c
                  - |
                    echo "自动注册服务" |tee -a /tmp/web.log
                    sleep 10
              preStop:                    # 定义关闭前事件处理函数
                exec:
                  command:
                  - sh
                  - -c
                  - |
                    echo "清除已注册的服务" |tee -a /tmp/web.log
                    sleep 10

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

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

相关文章

CompletableFuture // todo

相比较所有代码都在主线程执行&#xff0c;使用Future的好处&#xff1a;利用服务器多核、并发的优势。 不足&#xff1a; 开启没有返回值的异步线程&#xff1a; 1、runAsync 使用lambda表达式&#xff1a; 开启有返回值的异步线程&#xff1a; 1、supplyAsync 异步任务中的…

如何评价deepseek-V3 VS OpenAI o1 自然语言处理成Sql的能力

DeepSeek-V3 介绍 在目前大模型主流榜单中&#xff0c;DeepSeek-V3 在开源模型中位列榜首&#xff0c;与世界上最先进的闭源模型不分伯仲。 准备工作&#xff1a; 笔者只演示实例o1 VS DeepSeek-V3两个模型&#xff0c;大家可以自行验证结果或者实验更多场景&#xff0c;同时…

ASP.NET Core 实现微服务 - Consul 配置中心

这一次我们继续介绍微服务相关组件配置中心的使用方法。本来打算介绍下携程开源的重型配置中心框架 apollo 但是体系实在是太过于庞大&#xff0c;还是让我爱不起来。因为前面我们已经介绍了使用Consul 做为服务注册发现的组件 &#xff0c;那么干脆继续使用 Consul 来作为配置…

tdengine数据库使用java连接

1 首先给你的项目添加依赖 <dependency> <groupId>com.taosdata.jdbc</groupId> <artifactId>taos-jdbcdriver</artifactId> <version>3.4.0</version> <!-- 表示依赖不会传递 --> </dependency> 注意&am…

深入学习RabbitMQ的Direct Exchange(直连交换机)

RabbitMQ作为一种高性能的消息中间件&#xff0c;在分布式系统中扮演着重要角色。它提供了多种消息传递模式&#xff0c;其中Direct Exchange&#xff08;直连交换机&#xff09;是最基础且常用的一种。本文将深入介绍Direct Exchange的原理、应用场景、配置方法以及实践案例&a…

51单片机——串口通信(重点)

1、通信 通信的方式可以分为多种&#xff0c;按照数据传送方式可分为串行通信和并行通信&#xff1b; 按照通信的数据同步方式&#xff0c;可分为异步通信和同步通信&#xff1b; 按照数据的传输方向又可分为单工、半双工和全双工通信 1.1 通信速率 衡量通信性能的一个非常…

本地手集博客id“升级”在线抓取——简陋版——(2024年终总结1.1)

我之前每每发布笔记都用csv纯文本记录&#xff0c;一个机缘巧得文章列表api实现在线整理自已的文章阅读量数据。 (笔记模板由python脚本于2025年01月10日 18:48:25创建&#xff0c;本篇笔记适合喜欢钻牛角尖的coder翻阅) 【学习的细节是欢悦的历程】 Python官网&#xff1a;htt…

高等数学学习笔记 ☞ 洛必达法则与泰勒公式

1. 洛必达法则 1. 型与型未定式&#xff08;洛必达法则&#xff09; &#xff08;1&#xff09;型&#xff1a;若函数同时满足以下条件&#xff1a; &#xff08;2&#xff09;型&#xff1a;若函数同时满足以下条件&#xff1a; ①&#xff1a;当时&…

Qt官方下载地址

1. 最新版本 Qt官方最新版本下载地址&#xff1a;https://www.qt.io/download-qt-installer 当前最新版本Qt6.8.* 如下图&#xff1a; 2. 历史版本 如果你要下载历史版本安装工具或者源码编译方式安装&#xff0c;请转至此链接进行下载&#xff1a;https://download.qt.i…

怎么用NodeJS脚本对接TTS播报音响

怎么用NodeJS脚本对接TTS播报音响呢&#xff1f; 本文描述了使用NodeJS脚本调用HTTP接口&#xff0c;对接TTS播报音响&#xff0c;。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂商1智能语音音柱|10W统软物联2智能语音壁挂音箱|款式…

计算机存储之图解机械硬盘

问&#xff1a;机械硬盘是如何工作的&#xff1f; 答&#xff1a;请看VCR 一、机械硬盘物理结构 1.1、盘片(platter) 视频中银白色的圆盘称为盘片&#xff0c;二进制数据就是存储在盘片上&#xff0c;盘片解剖后如下图所示&#xff1a; 一圈一圈的同心圆称为磁道&#xff08;…

HTML前端从零开始

第一天 HTML部分 什么是HTML HTML&#xff08;Hypertext Markup Language&#xff09;超文本标记语言。HTML是万维网的基石。 超&#xff1a; 超字第一层意义是指最重要的标签&#xff0c;超链接标签 超越文本的意思 HTML的发展历程 HTML1990年出现&#xff0c;web之父…

moviepy 将mp4视频文件提取音频mp3 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

【Leetcode-移动零】利用将非零元素移动至数组前解决移动零问题(剪枝优化)

题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例1 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例2 输入: nums [0] 输出…

浅析大语言模型安全和隐私保护国内外标准和政策

过去两年&#xff0c;大模型技术已经普及并逐步渗透到各行各业&#xff0c;2025年注定是大模型应用井喷式发展的一年&#xff0c;AI在快速发展的同时&#xff0c;其带来的安全风险也逐渐凸显。人工智能系统的安全性和隐私保护已经成为社会关注的重点。 附下载&#xff1a;600多…

第21篇 基于ARM A9处理器用汇编语言实现中断<三>

Q&#xff1a;怎样编写ARM A9处理器汇编语言代码配置按键端口产生中断&#xff1f; A&#xff1a;使用Intel Monitor Program创建中断程序时&#xff0c;Linker Section Presets下拉菜单中需选择Exceptions。主程序在.vectors代码段为ARM处理器设置异常向量表&#xff0c;在…

直流无刷电机控制(FOC):电流模式

目录 概述 1 系统框架结构 1.1 硬件模块介绍 1.2 硬件实物图 1.3 引脚接口定义 2 代码实现 2.1 软件架构 2.2 电流检测函数 3 电流环功能实现 3.1 代码实现 3.2 测试代码实现 4 测试 概述 本文主要介绍基于DengFOC的库函数&#xff0c;实现直流无刷电机控制&#x…

(四)结合代码初步理解帧缓存(Frame Buffer)概念

帧缓存&#xff08;Framebuffer&#xff09;是图形渲染管线中的一个非常重要的概念&#xff0c;它用于存储渲染过程中产生的像素数据&#xff0c;并最终输出到显示器上。简单来说&#xff0c;帧缓存就是计算机图形中的“临时画布”&#xff0c;它储存渲染操作生成的图像数据&am…

Linux离线部署ELK

文章目录 前期准备开始安装安装elastic search安装logstash安装kibana 配置ELK配置ElasticSearch配置logstash配置kibana 启动ELK启动命令启动测试 设置ELK策略创建ILM策略将ILM策略与日志index关联查看索引是否被ILM策略管理 前期准备 ELK包含三部分软件 ElasticSearch用作搜…

LabVIEW数据库管理系统

LabVIEW数据库管理系统&#xff08;DBMS&#xff09;是一种集成了数据库技术与数据采集、控制系统的解决方案。通过LabVIEW的强大图形化编程环境&#xff0c;结合数据库的高效数据存储与管理能力&#xff0c;开发人员可以实现高效的数据交互、存储、查询、更新和报告生成。LabV…