k8s之pod生命周期

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

相关文章

【C++】find() 函数全解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;一、find() 函数概述1.基本作用2.函数形式解释3.举例&#xff1a;查找失败 &#x1f4af;二、解析和示例解释1. 基本示例&#xff1a;字符串查找2. 字符查找3. 查找失败处理…

音频DSP的发展历史

音频数字信号处理&#xff08;DSP&#xff09;的发展历史是电子技术、计算机科学和音频工程共同进步的结果。这个领域的进展不仅改变了音乐制作、音频后期制作和通信的方式&#xff0c;也影响了音频设备的设计和功能。以下是对音频DSP发展历史的概述&#xff1a; 早期概念和理论…

【MySQL数据库】基础总结

目录 前言 一、概述 二、 SQL 1. SQL通用语法 2. SQL分类 3. DDL 3.1 数据库操作 3.2 表操作 4. DML 5. DQL 5.1 基础查询 5.2 条件查询 5.3 聚合函数 5.4 分组查询 5.5 排序查询 5.6 分页查询 6. DCL 6.1 管理用户 6.2 权限控制 三、数据类型 1. 数值类…

2021 年 3 月青少年软编等考 C 语言五级真题解析

目录 T1. 红与黑思路分析T2. 密室逃脱思路分析T3. 求逆序对数思路分析T4. 最小新整数思路分析T1. 红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的…

Day31补代码随想录20250110贪心算法5 56.合并区间|738.单调递增的数字|968.监控二叉树(可跳过)

【先跳过监控二叉树】 56.合并区间 题目 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [start<sub>i</sub>, end<sub>i</sub>] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该…

[程序设计]—代理模式

[程序设计]—代理模式&#x1f473; 本文章记录学习于——52.面向切面&#xff1a;AOP-场景模拟_哔哩哔哩_bilibili 最近闲来无事&#xff0c;在学习Spring的源码&#xff1a; 后面慢慢更新源码系列blog&#xff0c;希望多多关注&#x1f64f;&#x1f64f; 目前已经总结的b…

MySQL程序之:简要概述

MySQL安装中有许多不同的程序。本节简要概述了它们。后面的部分提供了每个程序的更详细描述&#xff0c;但NDB集群程序除外。每个程序的描述表明了它的调用语法和它支持的选项。&#xff0c;“NDB集群程序”&#xff0c;描述了特定于NDB集群的程序。 大多数MySQL发行版包括所有…

webrtc之rtc::ArrayView<const uint8_t>

rtc::ArrayView<const uint8_t> 是 WebRTC&#xff08;或其他基于 rtc 命名空间的库&#xff09;中常见的一个类型&#xff0c;它通常用于表示一块 只读的内存区域&#xff0c;该内存区域由一系列 uint8_t 类型&#xff08;无符号 8 位整数&#xff09;元素组成。 1. rt…