当前位置: 首页 > article >正文

k8s之pod生命周期

一.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.kler.cn/a/504417.html

相关文章:

  • 从源码角度分析SpringMVC执行流程
  • 查看APK的公钥,MD5信息
  • 51_Lua面向对象编程
  • 数仓建模(五)选择数仓技术栈:Hive ClickHouse 其它
  • C#使用OpenTK绘制3D可拖动旋转图形三棱锥
  • 如何选择Ubuntu版本
  • Open FPV VTX开源之betaflight配置
  • 深度剖析RabbitMQ:从基础组件到管理页面详解
  • TiDB常见操作指南:从入门到进阶
  • Unreal Engine 5 C++ Advanced Action RPG 八章笔记
  • 【Uniapp-Vue3】uni-api交互反馈showToast的使用方法
  • RV1126+FFMPEG推流项目(4)VENC模块视频编码流程
  • adb端口转发
  • 网络安全的学习路径 (包括资源)快速学习
  • Mac上安装Label Studio
  • 钉钉实现第三方登录示例(重复回调问题解析)
  • SQL中的行转列,列转行
  • 一些常见的Java面试题及其答案
  • 网络攻击行为可视化分析系统【数据分析 + 可视化】
  • CSS | 实现三列布局(两边边定宽 中间自适应,自适应成比)
  • HTML文章翻页功能
  • 【已解决】【记录】2AI大模型web UI使用tips 本地
  • 阿里云直播Web
  • MTK6768 Android13 亮度条均匀调节实现
  • 一套UI精美、控件丰富、多主题的WinForm开源界面库
  • 【Uniapp-Vue3】pages设置页面路径及窗口表现