k8s之pod生命周期

news/2025/1/12 13:00:34/
一.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/news/1562507.html

相关文章

istio-proxy内存指标

在 Istio 环境中&#xff0c;istio-proxy 是 Envoy 的边车代理容器。通过运行命令 curl localhost:15000/memory&#xff0c;或者curl localhost:15000/stats 可以查询 Envoy 的内存统计信息。以下是典型返回结果的结构和意义&#xff1a; 返回结果单位是bytes&#xff0c;需/…

PHP与ThinkPHP连接数据库示例

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…

Linux下实时监测双网卡的默认网卡并重新设置默认网卡

在项目使用过程中&#xff0c;碰到了一些双网卡电脑&#xff0c;连接的两个交换机中某一交换机重启。导致通信不正常的情况。 发现是默认网卡发生变化&#xff0c;当然&#xff0c;也有可能是网络连接状态变化 首先通过命令来查看默认网卡是否发生变化 route -n然后通过写入…

Network Compression(李宏毅)机器学习 2023 Spring HW13 (Boss Baseline)

1. Introduction to Network Compression 深度学习中的网络压缩是指在保持神经网络性能的同时,减少其规模的过程。这非常重要,因为深度学习模型,尤其是用于自然语言处理或计算机视觉的大型模型,训练和部署的计算成本可能非常高。网络压缩通过降低内存占用并加快推理速度,…

el-table 合并单元格

参考文章&#xff1a;vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…

pytest+allure 入门

使用allure如何生成自动化测试报​​​​​​告 &#xff1f;一文详解allure的使用 。_allure测试报告-CSDN博客 例子&#xff1a; import allure import pytest import osallure.epic("闹钟") allure.feature("闹钟增删") class TestSchedule():def setu…

一键部署Netdata系统无需公网IP轻松实现本地服务器的可视化监控

文章目录 前言1.关于Netdata2.本地部署Netdata3.使用Netdata4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Netdata公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。…

Elasticsearch学习(2) :DSL和RestClient实现搜索文档

之前的学习中——Elasticsearch学习(1) &#xff0c;我们已经导入了大量数据到elasticsearch中&#xff0c;实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以这篇我们研究下elasticsearch的数据搜索功能。我们分别使用DSL(Domain Specif…