自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/qq_50655286/article/details/145051045

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!